Dynamic execution unit management for high performance user level network server system
First Claim
1. A method for dynamically managing a pool of execution units in a server system, the pool devoted to a communication process between client and server processes, the method comprising the steps of:
- creating and setting a minimum number of execution units in the communication process pool in the server system, the minimum number of execution units needed a number necessary to support a typical client load;
setting a maximum number of execution units allowed in the communication process pool, the maximum number of execution units an upper bound to support a peak client load without overloading the server system;
setting a maximum allotted number of execution units which can be allotted to a respective client;
receiving client requests for service by the server system;
for each received client request, determining whether assigning an execution unit to the received client request would bring a current number of execution units in the communication process pool over the maximum number of execution units, and if so, rejecting the client request;
determining whether assigning an execution unit to the received client request would bring a current number of assigned execution units to a client making the request over the maximum allotted number of execution units for the client, and if so, rejecting the client request; and
granting the client request if the determining steps are negative so that an execution unit in the communication process pool is assigned to the client request.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, system and product for dynamically managing a pool of execution units in a server system, the pool devoted to a communication process between client and server processes. A minimum and a maximum number of execution units in the communication process poolis established. The minimum number of execution units is the number necessary to support a typical client load. The maximum number of execution units is an upper bound to support a peak client load without overloading the server system. As client requests for service are received by the server system, a number of determinations are made. It is determined whether assigning an execution unit to the request would bring a current number of execution units in the communication process pool over the maximum number of execution units. If so, the client request is rejected. It is determined whether assigning an execution unit to the request would bring the number of assigned execution units to a client task making the request over an allotted number of execution units for the client task. If so, the client request is rejected. The client request if the determinations are negative thereby assigning an execution unit in the commnication process pool to the client request. The number of unused execution units in the communication pool is periodically reviewed to determine whether it should be increased or decreased to improve system performace.
-
Citations
20 Claims
-
1. A method for dynamically managing a pool of execution units in a server system, the pool devoted to a communication process between client and server processes, the method comprising the steps of:
-
creating and setting a minimum number of execution units in the communication process pool in the server system, the minimum number of execution units needed a number necessary to support a typical client load;
setting a maximum number of execution units allowed in the communication process pool, the maximum number of execution units an upper bound to support a peak client load without overloading the server system;
setting a maximum allotted number of execution units which can be allotted to a respective client;
receiving client requests for service by the server system;
for each received client request, determining whether assigning an execution unit to the received client request would bring a current number of execution units in the communication process pool over the maximum number of execution units, and if so, rejecting the client request;
determining whether assigning an execution unit to the received client request would bring a current number of assigned execution units to a client making the request over the maximum allotted number of execution units for the client, and if so, rejecting the client request; and
granting the client request if the determining steps are negative so that an execution unit in the communication process pool is assigned to the client request. - View Dependent Claims (2, 3, 4, 5, 6, 7)
responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the maximum number of execution units, placing the received client request in a wait state; and
responsive to an execution unit being released by a second client, assigning the released execution unit to the received client request.
-
-
3. The method as recited in claim 1, further comprising the steps of:
-
responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the allotted maximum number of execution units, placing the received client request in a wait state; and
responsive to an execution unit being released by a client task of the client, assigning the released execution unit to the received client request.
-
-
4. The method as recited in claim 1, wherein the client and server processes are resident in the same computer system.
-
5. The method as recited in claim 1, further comprising the steps of:
-
determining whether a number of unassigned execution units in the communication process pool is less than a predetermined, desired number of unassigned execution units; and
responsive to determining that the number of unassigned execution units is less than the desired number, creating additional unassigned execution units in the communication process pool so long as the additional unassigned execution units would not bring the current number of execution units over the maximum number of execution units.
-
-
6. The method as recited in claim 1, further comprising the steps of:
-
determining whether the number of unassigned execution units in the communication process pool is greater than a predetermined, desired number of unassigned execution units; and
responsive to determining that the number of unassigned execution units is greater than the desired number, reducing the number of execution units in the communication process pool.
-
-
7. The method as recited in claim 1, further comprising the steps of:
-
monitoring client requests to establish an average number of concurrent client requests; and
dynamically changing the minimum number and the maximum number of execution units in the communication process pool according to the average number of concurrent client requests.
-
-
8. A system for dynamically managing a pool of execution units in a server system, the pool devoted to a communication process between client and server processes, the system comprising:
-
means for creating and setting a minimum number of execution units needed in the communication process pool, in the server system, the minimum number of execution units a number necessary to support a typical client load;
means for setting a maximum number of execution units allowed in the communication process pool, the maximum number of execution units an upper bound to support a peak client load without overloading the server system;
means for setting a maximum allotted number of execution units which can be allotted to a respective client;
means for receiving client requests for service by the server system;
means for determining whether assigning an execution unit to the received client request would bring a current number of execution units in the communication process pool over the maximum number of execution units;
means for determining whether assigning an execution unit to the received client request would bring a current number of assigned execution units to a client task making the request over an allotted number of execution units for the client task; and
means for granting the client request if the determining means establish that an execution unit in the communication process pool can be assigned to the client request. - View Dependent Claims (9, 10, 11, 12, 13)
means responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the maximum number of execution units for placing the received client request in a wait state; and
means responsive to an execution unit being released by a second client for assigning the released execution unit to the received client request.
-
-
10. The system as recited in claim 8, further comprising:
-
means responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the allotted maximum number of execution units for placing the received client request in a wait state; and
means responsive to an execution unit being released by a client task of the client for assigning the released execution unit to the received client request.
-
-
11. The system as recited in claim 8, further comprising:
-
means for determining whether a number of unassigned execution units in the communication process pool is less than a predetermined, desired number of unassigned execution units; and
means responsive to determining that the number of unassigned execution units is less than the desired number for creating additional unassigned execution units in the communication process pool so long as the additional unassigned execution units would not bring the current number of execution units over the maximum number of execution units.
-
-
12. The system as recited in claim 8 , further comprising:
-
means for determining whether the number of unassigned execution units in the communication process pool is greater than a predetermined, desired number of unassigned execution units; and
means responsive to determining that the number of unassigned execution units is greater than the desired number for reducing the number of execution units in the communication process pool.
-
-
13. The system as recited in claim 8, further comprising:
-
means for monitoring client requests to establish an average number of concurrent client requests; and
means for dynamically changing the minimum number and the maximum number of execution units in the communication process pool according to the average number of concurrent client requests.
-
-
14. A computer program product in a computer readable medium for dynamically managing a pool of execution units in a server system, the pool devoted to a communication process between client and server processes, the product comprising:
-
means for causing the system to creating and setting a minimum number of execution units needed in the communication process pool, in the server system, the minimum number of execution units a number necessary to support a typical client load;
means for setting a maximum number of execution units allowed in the communication process pool, the maximum number of execution units an upper bound to support a peak client load without overloading the server system;
means for setting a maximum allotted number of execution units which can be allotted to a respective client;
means for causing the system to receive client requests for service by the server system;
means for causing the system to determine whether assigning an execution unit to the received client request would bring a current number of execution units in the communication process pool over the maximum number of execution units;
means for causing the system to determine whether assigning an execution unit to the received client request would bring a current number of assigned execution units to a client task making the request over an allotted number of execution units for the client task; and
means for causing the system to grant the client request responsive to determination that an execution unit in the communication process pool can be assigned to the client request. - View Dependent Claims (15, 16, 17, 18, 19)
means responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the maximum number of execution units for placing the received client request in a wait state; and
means responsive to an execution unit being released by a second client for assigning the released execution unit to the received client request.
-
-
16. The product as recited in claim 14, further comprising:
-
means responsive to determining that the received client request would bring the current number of execution units in the communication process pool over the allotted maximum number of execution units for placing the received client request in a wait state; and
means responsive to an execution unit being released by a client task of the client for assigning the released execution unit to the received client request.
-
-
17. The product as recited in claim 14, further comprising:
-
means for determining whether a number of unassigned execution units in the communication process pool is less than a predetermined, desired number of unassigned execution units; and
means responsive to determining that the number of unassigned execution units is less than the desired number for creating additional unassigned execution units in the communication process pool so long as the additional unassigned execution units would not bring the current number of execution units over the maximum number of execution units.
-
-
18. The product as recited in claim 14, further comprising:
-
means for determining whether the number of unassigned execution units in the communication process pool is greater than a predetermined, desired number of unassigned execution units; and
means responsive to determining that the number of unassigned execution units is greater than the desired number for reducing the number of execution units in the communication process pool.
-
-
19. The product as recited in claim 14, further comprising:
-
means for monitoring client requests to establish an average number of concurrent client requests; and
means for dynamically changing the minimum number and the maximum number of execution units in the communication process pool according to the average number of concurrent client requests.
-
-
20. A method for dynamically managing a pool of execution units in a computer system, the pool devoted to a given type of task between client processes and server processes, the given type of task a subset, of all tasks performed by the computer system, comprising the steps of:
-
managing a current number of execution units in the pool in the computer system between a minimum number of execution units necessary to support a typical client load for the given type of task and a maximum number of execution units to avoid overloading the computer system;
managing a current number of execution units in the pool assigned to each client process to be less than or equal to an allotted number of execution units for the client process for the given type of task; and
assigning execution units to client requests for service, if possible according to the managing steps.
-
Specification