What is Wait State?
Wait state signifies the time spent by the processor in waiting for an operation to happen. In simple terms, it refers to the idle states or idle computer cycles.
Technically, in such situations, the Ready pin, usually the Pin 35, is put into a low state. When the conditions are favorable due to availability of the necessary data for the CPU to operate, this pin is withdrawn from the low state.
- The wait state is the time when the CPU or the bus sits idle till one operation takes place and it can start working on the following one.
- Such a state may be the result of an external memory or another device which is slow to respond and to send instructions to the processor of the computer system.
- This state is quite important because it helps in thwarting the incompatibilities in the CPU speed.
- The wait state changes into ready state as soon as legit data is available to the processor by withdrawing the low state of the Ready pin.
- Different techniques are used today to handle wait state issues such as CPU caches, branch prediction, prefetch, instruction pipelines, simultaneous multithreading and more.
Understanding Wait State
Wait state is the time spent by the CPU to receive an instruction or information from the memory to start an operation.
However, within the realm of the IBM mainframes, a wait state has a completely different meaning.
Here, the term wait state is used to refer to the specific state where the processor is being halted.
This may be a result of some type of severe error situations such as an unrecoverable error occurring in the operating system during pipelining.
While the CPU is in the wait state, it cannot perform any operation because it does not have the necessary information to complete the task.
Therefore, a wait state may apparently seem to be a pure waste of time and resources of the processor that eventually affects the performance of the CPU as well as the computer system as a whole.
(Well, it is just partially true, as you will find explained in a later section of this article).
Modern processor design:
Modern microprocessors are designed differently from those of the earlier days in order to reduce, if not eliminate, wait states. The designers use a variety of methods to achieve this, such as:
- Using CPU caches
- Implementing instruction pipelines
- Using instruction prefetch
- Employing branch prediction
- Executing simultaneous multithreading and more.
None of these procedures are 100% successful individually, but when these are implemented together, they can significantly alleviate the wait state issue.
It is however possible for a processor to come with a zero wait state design or mechanism. These processors run at its highest speed without caring for any time-outs to pay off for the slow memory.
These specific type of CPUs typically avoid wait states by implementing different modus operandi which includes the following:
- Page-mode memory
- Memory caches
- Interleaved memory
- A burst mode
Ideally, it is quite normal for a processor of a computer to enter into short wait states because all the innards of the computer operate at different speeds than it.
However, it is good as long as the wait period is negligible and unobtrusive to the user.
Effects and fixes:
Typically, this is not always the case and these wait states are often longer than expected. In fact, longer CPU wait state is one of the primary causes for a computer to freeze.
If your system experience frequent wait times, it will result in significant issues such as:
- Low transaction output in the database
- Health degradation in the databases and applications
Therefore, it is very important that you fix the high wait time by identifying the sources or processes behind it along with the disks involved.
There are several ways in which you can high wait time, and some of the most common ones are as follows:
- You may reduce the frequency of reads and writes on the disks by reducing database queries and other similar I/O operations.
- Ensuring that the operating system is of the latest version or updating it to it by installing all the patches is also a good way to fix wait states. This will reduce the chances of the bugs in the operating system causing wait states
- You can upgrade the RAM in the server as well as upgrading and installing the hard disk with higher RPMs or replacing them with SSDs with a Higher Input Output Operations Per Second or IOPS.
- You must terminate those specific processes that may be causing the damage and increasing the CPU user time as well.
- You must check for swap usage because a high usage will indicate that the system is basically out of RAM. In such a situation you will need to increase it to reduce wait times.
- Finally, checking for any possible or latent memory leak that may be a result of the applications using memory without freeing it up after use is also an effective fix of wait states and reduce high wait time.
What Causes Wait States on the CPU?
Typically, the computer microprocessors run at a speed that is much higher than the speed of the other subsystems in the computer system. Even the fastest memory cannot provide data as fast as the processor can process it.
So, if these subsystems hold the specific data necessary for the CPU to read and write in order to execute an operation, it will result in a wait state.
Wait state can be a result of the following:
- A slow external memory
- A slow device or subsystem
- Higher memory latency
- A low level processor cache that runs slower than the CPU core
There may be many times when there might not be any input available for the processor even if it is in the ready state to receive data from the memory, or a device, or from any other location.
In such situations, it will result in wastage of CPU time due to wait state as well.
A common example of such wait time is when a computer system wakes up from sleep mode. In such a moment, the computer does not start immediately. Instead, it hangs for a moment.
During this time, the processor and the RAM both get back in proper sync in order to restart the operating system or any other program that may be running before the system went to sleep mode.
Sometimes, wait time may be induced in a computer system and processor naturally, but those are for specific reasons, which are explained later on in this article.
How Long is a Wait State?
Ideally, the time of wait state can be as little as 10 seconds or as high as an hour. Typically, the interval of wait state primarily depends on the particular process and the conditions.
Usually, the unit of time related to the timed-wait state is Maximum Segment Length or MSL. On windows, this MSL is 120 seconds or 2 minutes by default.
Based on this specification, the default wait time of the system can be measured as 2*MSL = 240 seconds or 4 minutes.
However, this wait time can be much more than that because it depends largely on the turnaround time.
This is the time needed to complete a particular process right from its submission to its completion.
It also entails the time needed by the process to spend in the ready queue waiting for its turn to be sent to and accepted by the CPU.
Typically, exactly how long a wait time will be entirely boils down to the CPU design decisions.
If the decoder circuitry is highly sophisticated, the wait states may be shorter because you can combine a faster RAM with a faster CPU, and both will work well due to the system design.
This is ideally the case with most of the 80286 machines. Usually in the recent and more complex machines, it is assumed that there are no such wait states.
However, in spite of their better and more advanced configuration, even these machines use them.
It is just that these wait states are either set involuntarily or they are non-changeable, which limits expandability.
How Does Wait State Work?
A CPU enters into the wait state when there is no valid data or input for the CPU to operate on. It can also happen when there is a delay experienced by the CPU while accessing any other device or an external memory that is very slow to respond.
Typically, when a CPU needs to access an external memory, it will place a request for the address of the information on the address bus. This information will not be provided to it instantaneously.
A wait state is typically induced in between the times when the processor requests for specific data from the Random Access Memory or RAM for an address to be placed on the address bus and the time when the requested content is delivered by the RAM to the CPU.
In fact, the processor may have to wait for the answer, a wait which can often be tens if not hundreds of cycles. Each of these cycles spent waiting is referred to as a wait state.
Why is the CPU Wait Time High?
The wait time typically indicates the state of the processor or the cores in it, and it may be high due to several reasons, one of the typical reasons out of them being larger outstanding on requests.
However, there may be several other sources that can cause such an effect. Here are a few of the probable reasons that may cause high wait time.
- Bottlenecks within the layers of storage that takes more time to respond to requests
- A longer queue of I/O requests within the particular storage layer that may result in an increase in the memory latency
- Block devices or physical disks that are too slow to respond
- The devices reaching the saturation point
- The processes may need a higher read and/or write operation to the disk
- The processes may be in the state of an unceasing sleep state
- File or a partition swapping cause due to shortage of Random Access memory on the host or the guest operating system
- Too much disk or network I/O operations which take much time resulting in overall system slowness
Sometimes, even the use of slower disk or degraded Redundant Array of Independent Disks or RAID array may result in high wait times.
This is because these slower disks will cause delays in accessing time to the memory by the processor for executing the necessary read and write operations for the particular task.
Frequent and high wait times will eventually affect the performance of the system as a whole because it will force the server to deal with higher bandwidth for performing other computing tasks when it waits for a particular I/O request.
Ideally, the wait time is one of the most important and common metrics to determine and analyze the performance of a computer system.
Therefore, if your system experiences high wait time more often than not, you should fix it by the steps mentioned before and prevent it from negatively impacting its performance and slowing things down.
What is the Purpose of Wait State in a Microprocessor?
A microprocessor may enter into a wait state, no matter for whatever reason, to pause or slow down the CPU clock temporarily, provided that it has nothing else to do. This is done especially to reduce the consumption of energy during the idle states.
This means that the CPU cores will not have to spin uselessly in a fixed loop when there is nothing to do and having to wait for the necessary data.
Apart from reducing the consumption of power and resources uselessly, sporadic reduction of CPU clock speeds also helps in keeping the cores as well as the CPU as a whole much cooler, eliminating the need for an additional cooling system.
Both these aspects will have a significant effect on the battery life by extending it, which is very helpful and essentially required for the portable computing devices.
In addition to that, a wait state in a processor, preferably short, is also required sometimes because the other different functional parts of the computer system typically do not function at par with the clock speed of the CPU. This may cause irrecoverable system lags.
Therefore, the CPU wait state is also required to interface the slow components to it and the memory.
When the CPU enters in the wait state, it prevents the increase of this time lag between the components and the processor of the computer system.
On the contrary, this will actually give enough time to the slower components to catch up with the operation of the CPU by making it sit idle for a couple of clock cycles.
Wait states are also required sometimes by the buses, as it is required by the CPUs.
This is because, in most cases, it is found that the expansion boards in particular run much slower in comparison to the buses.
Once again, the wait states allow things to catch up and work in perfect tandem.
And, finally, in some cases, a few computers may induce a wait state naturally.
These specific types of computers typically have the ability to shut it down when it is not required rather than letting the system and the CPU run continuously.
This also saves power, enhances battery life, and keeps the system cool.
In the case of laptop computers especially, a processor entering the wait state serves very important purposes. It actually prevents the system from getting heated up very quickly.
It will also reduce the amount of time the cooling fan inside the computer case needs to run, if at all. This will eventually add to the total amount of energy saved and also increase the battery life.
Therefore, as you can see, the CPU wait state is a much more complex subject than it seems.
Though it is necessary to prevent it from happening frequently and for a longer time, it is also necessary for better functioning of the Central Processing Unit and for a higher performance of the computer system as a whole.