Thrashing

Thrashing is a computer science term referring to an undesirable occurrence in multiprocessing systems.

When a processor is given multiple jobs to do, it services them a little each in a round-robin fashion (assuming that no priority system is in effect), until each is done. This is, of course, actually significantly less efficient than doing each job one at a time, but doing a little of each job, a little at a time is more productive when dealing with humans, who like – for example – their web page to download at the same time as they write a Word document.

Unfortunately, optimizations to this system can cause it to go wrong. By giving the processor more and more jobs to do, it eventually passes a critical point at which it is spending more time performing administrative tasks and managing it’s ’round robin’ scheme than it is actually performing the tasks you want it to. You’ve probably seen a system doing this. The solution, of course, is to either stop giving the system jobs to do until it can finish some of those it already has, or, better still, to kill some of the running processes to enable the processor to catch up on it’s workload. The solution is not to click irritably on the buttons, or repeatedly demand more and more of the processor.

Today, I feel like a thrashed processor.