A system, method and computer program product for managing computer
resources in a computer system running an operating system and a
plurality of processes grouped into at least two groups. A set of
resource limits corresponds to the processes. A scheduler of resource
allocation allocates resources to each process such that total resource
allocation to a group to which that process belongs remains constant. The
resources comprise, e.g., network bandwidth, number of network
connections, I/O bandwidth for peripheral devices, number of operations
in a period of time for service operation with countable requests for
service, number of operations in a period of time for a daemon with
countable requests for service, permission for execution of operation,
number of security descriptors, and number of terminals. The scheduler
reallocates the resources based on a predictive algorithm, or based on
process priority, or based on relative weighting of the processes. The
scheduler can adjust an increase and a decrease of the resources
available to a particular process. The scheduler is capable of increasing
a resource allocation restriction to one process by and by waiting for
that resource to become available. The scheduler is capable of increasing
a resource allocation to one process by reducing allocation restriction
to other processes in the same group on a basis proportional to their
current use of that resource. The scheduler can reduce a resource
allocation to a particular process based on a history of consumption of
the resource by that process and a history of consumption of other
resources by that process.