User:Kasunbg/Work stealing

Work Stealing (in some contexts Task Stealing) refers to an efficient Scheduling technique in Computer science that allows distributing threads to multiple processors.

A scheduling algorithm must ensure that there are enough active threads that can be distributed to the processors. At the same time too many active processes lead to unreasonably high memory consumption. Further, the running threads should be on the same processor to keep the communication effort small. These must be balanced by the scheduler.

In contrast to work sharing, in work stealing, underutilized processors take the initiative and attempt to "steal" threads from other processors. But in work sharing, whenever a processor generates new threads, the scheduler attempts to migrate some of them to other processors in hopes of distributing the work to underutilized processors. Intuitively, the migration of threads occurs less frequently with work stealing than with work sharing, since when all processors have work to do, no threads are migrated by a work-stealing scheduler, but threads are always migrated by a work-sharing scheduler.

More detailed description can be found in Blumofe et al, albeit with strong references to the theoretical foundations.