Worker level scheduling
The idea is to provide a low level tool to garantee resource sharing between groups of users with different priorities.
Any action would happen directly on the workers, with no need to route info around to the master. Once the priorities,
and therefore the fraction of resources, are defined (via the config file or from the master), proofserv itself would
regulate the request for new packets, introducing ad hoc delays to control the time assigned to a session.
Priorities, fraction of resources, inflating factors
In general the users will be classified in Ng groups, each with Nu users; users in each group have equal priorities.
Be Pg(j) the priority of group j. For simplicity, the priorities are always given in arbitrary units, the only meaningful
quantity being the relative strengthness. The fraction of resources Xg(j) could also be called normalized priorities,
as
Xg(j) = Pg(j) / SumPg
where SumPg = Sum(j:1,Ng) Pg(j) .
Within each group, users have the same priority Pu(j; i), so that user i or group j will have a (unnormalized) priority of
Pu(j; i) = Pg(j) / Nu(j)
and a fraction of resources of Xu(i) = Xg(j) / Nu(j) .
The inflating factors are the factors to be applied to the real processing time to simulate a processing time respecting the
enforced resource sharing. By default, the system would give to all users the save resources. As we cannot accelerate
processing, we have to inflate the processing time of the lower priority sessions. If jmax is the group with highest
priority then users in jmax will not be affected by time inflation. The other users will get their processing time inflated
according to
--
GerardoGanis - 20 Feb 2007