What is Convoy Effect?
The convoy effect is a phenomenon that happens in the presence of multiple processes, in which a process needs a resource for a concise duration of time to complete its execution. Still, that specific resource has been blocked as some other process has been using it for a long time.
We can observe this effect in the First Come First Serve (FCFS) algorithm if the very first process that enters the ready queue has the highest burst time(It is the length of time a process needs to complete a particular activity or unit of work). Suppose if CPU is acquired by all the processes with higher burst time in the front. Then process with a lower burst time may not get CPU resource and will be blocked.
Let's see an example of how the convoy effect is affecting performance–
- I/O-bound processes receive priority for CPU time. They are less CPU-intensive. Thus, they run more rapidly and move to Input/output queues, so firstly, CPU time is allocated to I/O processes.
- The CPU-intensive task is now receiving CPU time allocation. The high burst time required for this process means finishing takes a while.
- The I/O bound processes complete their I/O activities by the time a CPU-intensive process is being performed, and they are then pushed back to the ready queue.
- The CPU-intensive task still needs to finish running. Therefore, the I/O-bound processes are forced to wait in light of this. I/O devices are inactive.
- The CPU-intensive process is forwarded to the I/O queue when it is done so that it can contact an I/O device.
- The I/O-bound processes receive the necessary CPU time in between and return to the I/O queues.
- They must wait anyway because the CPU-intensive activity is still connected to an I/O device. As a result, the CPU is currently idle.
- Therefore, in the Convoy Effect, one slow process causes the entire group of processes to run more slowly, wasting CPU time and additional resources.
Note- in the first come, first serve algorithm, the CPU does not care about the time duration of the process. It just executes the process that arrived first, and this is the loophole where the convoy effect begins
Let's understand the concept more easily
Think of a scenario where the road is full of cars, and there are two types of cars one of the fast second one is slow. Now, if the slower cars are in front of the traffic, the rest are in the back. The fast cars can go to their destination earlier, but they cannot move because the slower cars are moving very slowly, so they have to follow them at their speed; the utilization of the fast feature of the car cannot be done .
This illustration is very similar to convoy effect because this is what happens in the case of processes, large time-consuming processes have acquired the necessary resources so the short time-consuming processes cannot work until the resources are available and convoy effect happens.
What steps may operating systems take to prevent the convoy effect?
We have to change the scheduling algorithm and think of algorithms such as Pre-emptive scheduling techniques Round Robin Scheduling that can be utilized to avoid these Effects in systems. Since smaller processes don't have to wait long for CPU time, resulting in speedier execution and less resources lying idle.
Are starvation and the convoy effect the same?
Convoy effect has been causing the entire operating system to run slowly for a while because of a few slow processes. However, starvation is the endless delay of a process because it needs a certain resource to function, but even though that resource is available for allocation, it is never given to this process.
Is it possible to have a convoy effect in SJF(shortest job first) and priority scheduling?
One does not know the Burst Time of the process when the process is created, SJF is ineffective in practice. SJF cannot have a convoy effect if every job is initially accessible, but it may if a new process is introduced and it is a non-pre-emptive SJF. In general, when we believe all processes are available, we consider the convoy effect. FCFS will, therefore, undoubtedly have a convoy impact. Convoy effects are also conceivable with priority scheduling since longer processes could receive greater priority.