The Equipartition policy is a minor variation of the process control policy. Unlike the latter, the former does not ever let the number of ready VPs exceed the number of processors. Instead of assigning a new application a physical processor and then waiting for an existing VP to relinquish one at a safe point, Equipartition assigns the new application a processor after an existing VP has relinquished a physical processor.
Both the process control and Equipartition policies
are quasi-static policies in that they recalculate their quotas only when an
application is created/terminated.
They work well when
the number of VPS an application has is fixed - that is the parallelism
of an application does not change dynamically.
In some parallel applications,
the number may change dynamically.
For instance,
most parallel applications have an initialization phase in which
a single thread forks other threads.
This phase could be take substantial time,
depending on the application.
Other applications may gradually increase and decrease the number
of threads as waves of computations come and go.
The policies we have seen so create a static number of VPS for
each application (which get suspended/resumed dynamically)
which must equal the maximum concurrency the application will ever have.
This is wasteful when the application is in a phase that cannot
use its maximum concurrency.