Dynamic thread pool tuning techniques
First Claim
1. A method of dynamically tuning thread pools in a multithreaded server, comprising steps of:
- gathering baseline run-time statistics for a dynamically changeable workload on a multithreaded server, wherein the baseline statistics pertain to executing a first plurality of requests of the dynamically changeable workload, the requests being serviced by a plurality of thread pools;
programmatically altering the thread pools;
gathering new run-time statistics for the dynamically changeable workload, wherein the new statistics pertain to executing a second plurality of requests of the dynamically changeable workload, the requests being serviced by the programmatically altered thread pools; and
programmatically reversing the programmatic alteration if a comparison of the new run-time statistics to the baseline run-time statistics indicates that performance was degraded as a result of the programmatic alteration.
1 Assignment
0 Petitions
Accused Products
Abstract
Thread pools in a multithreaded server are programmatically adjusted, based on observed statistics from the server'"'"'s inbound workload. In a multithreaded server environment, response time to end users is improved while increasing the efficiency of software execution and resource usage. Execution time and wait/queued time are tracked, for various types of requests being serviced by a server. Multiple logical pools of threads are used to service these requests, and inbound requests are directed to a selected one of these pools such that requests of similar execution-time requirements are serviced by the threads in that pool. The number and size of thread pools may be adjusted programmatically, and the distribution calculation (i.e., determining which inbound requests should be assigned to which pools) is a programmatic determination. In preferred embodiments, only one of these variables is adjusted at a time, and the results are monitored to determine whether the effect was positive or negative. The disclosed techniques also apply to tracking and classifying requests by method name (and, optionally, parameters).
92 Citations
62 Claims
-
1. A method of dynamically tuning thread pools in a multithreaded server, comprising steps of:
-
gathering baseline run-time statistics for a dynamically changeable workload on a multithreaded server, wherein the baseline statistics pertain to executing a first plurality of requests of the dynamically changeable workload, the requests being serviced by a plurality of thread pools;
programmatically altering the thread pools;
gathering new run-time statistics for the dynamically changeable workload, wherein the new statistics pertain to executing a second plurality of requests of the dynamically changeable workload, the requests being serviced by the programmatically altered thread pools; and
programmatically reversing the programmatic alteration if a comparison of the new run-time statistics to the baseline run-time statistics indicates that performance was degraded as a result of the programmatic alteration. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A system for dynamically tuning thread pools in a multithreaded server, comprising:
-
means for gathering baseline run-time statistics for a dynamically changeable workload on a multithreaded server, wherein the baseline statistics pertain to executing a first plurality of requests of the dynamically changeable workload, the requests being serviced by a plurality of thread pools;
means for programmatically altering the thread pools;
means for gathering new run-time statistics for the dynamically changeable workload, wherein the new statistics pertain to executing a second plurality of requests of the dynamically changeable workload, the requests being serviced by the programmatically altered thread pools; and
means for programmatically reversing the programmatic alteration if a comparison of the new run-time statistics to the baseline run-time statistics indicates that performance was degraded as a result of the programmatic alteration. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A computer program product for dynamically tuning thread pools in a multithreaded server, the computer program product embodied on one or more computer readable media readable by a computing system in a computing environment and comprising:
-
computer-readable program code means for gathering baseline run-time statistics for a dynamically changeable workload on a multithreaded server, wherein the baseline statistics pertain to executing a first plurality of requests of the dynamically changeable workload, the requests being serviced by a plurality of thread pools;
computer-readable program code means for programmatically altering the thread pools;
computer-readable program code means for gathering new run-time statistics for the dynamically changeable workload, wherein the new statistics pertain to executing a second plurality of requests of the dynamically changeable workload, the requests being serviced by the programmatically altered thread pools; and
computer-readable program code means for programmatically reversing the programmatic alteration if a comparison of the new run-time statistics to the baseline run-time statistics indicates that performance was degraded as a result of the programmatic alteration. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. A method of doing business by dynamically tuning thread pools of a multithreaded server, comprising steps of:
-
programmatically gathering baseline operational characteristics of a workload at a multithreaded server, wherein the baseline operational characteristics pertain to executing a first plurality of requests of the dynamically changeable workload, the requests being serviced by a plurality of thread pools;
programmatically altering the thread pools by selectively incrementing or decrementing one of (1) a number of the thread pools used to service requests of the workload and (2) a number of threads assigned to a particular one of the thread pools;
programmatically gathering new operational characteristics for the dynamically changeable workload, wherein the new operational characteristics pertain to executing a second plurality of requests of the dynamically changeable workload, the requests being serviced by the programmatically altered thread pools;
programmatically reversing the programmatic alteration if a comparison of the new run-time statistics to the baseline run-time statistics indicates that performance was degraded as a result of the programmatic alteration; and
charging a fee for carrying out the steps of programmatically gathering baseline operational characteristics, programmatically altering, programmatically gathering new operational characteristics, and programmatically reversing steps.
-
Specification