Gang scheduling
Appearance
Scheduling threads of a single process to run at the same time.
For medium grained applications this form of scheduling dramatically improves performance since a thread waiting on another thread need not wait for it to execute.
Possible approaches:
If there are M processes and N processors, give each process all N processors for 1/M amount of time.
Unfortunately, if for example there are two processes, one with 4 threads and one with 1 thread, then 3 CPUs are idle when the 1-thread process runs.
In the above situation, let the 4-thread process have 4/5 of the time, and the 1-thread process 1/5 of the time.