Legal claims defining the scope of protection, as filed with the USPTO.
1. A multiprocessor system for efficiently allocating workload in middleware for a plurality of user processing requests among a plurality of processors comprising: a computer system including the plurality of processors configured to: assess a current processing workload for the plurality of user processing requests; subdivide a processing capability of the multiprocessor system into a plurality of processing units based on the current processing workload; start one or more processes to service the user processing requests; generate a processing queue for each of the processing units; assign a portion of each user processing request to one or more of the processing queues; service the portion of each user processing request by the one or more processes; allocate a variable predetermined time interval to each of the processing queues for which portions of the user processing requests assigned to a corresponding processing queue execute for a corresponding allocated time interval, wherein when a corresponding allocated time interval expires, a currently executing user processing request yields execution and signals the next in queue portion of the user processing requests to begin execution, and when a currently executing user processing request finishes execution prior to the expiration of the corresponding allocated time interval, determine whether to yield execution of the corresponding allocated time interval or execute an additional portion of the user processing requests during the corresponding allocated time interval.
2. The multiprocessor system of claim 1 , wherein said assigning is based on one or more of user processing request priority and user processing request service class.
3. The multiprocessor system of claim 2 , wherein the plurality of processors are further configured to collect metrics associated with each of the user processing requests, wherein said processing request priority is based on the metrics; and allocate a given portion of said processing capability of the multiprocessor system to a given user processing request service class when a user processing request service class is employed.
4. The multiprocessor system of claim 1 , wherein a number of said plurality of processing units determines an associated concurrency level number for the multiprocessor system for which a corresponding number of processing queues are generated and said servicing includes concurrently servicing portions of the user processing requests at the front of each corresponding processing queue; and wherein when one of the portions of the user processing requests is executing any remaining portions of the user processing requests are blocked from execution and when said one of the portions of the user processing requests finishes executing or when a processing time allocated to a given processing queue associated with said one of the portions of the user processing requests expires a next scheduled portion of the user processing requests are unblocked from execution.
5. The multiprocessor system of claim 1 , the plurality of processors are further configured to collect metrics associated with each of the user processing requests and compute a moving average of the actual execution time associated with each variable predetermined time interval, and when the variable predetermined time interval drops below a threshold, reduce the sampling rate for collecting said metrics to an interval that is a multiple of a corresponding actual execution time.
6. The multiprocessor system of claim 1 , the plurality of processors are further configured to determine when a portion of a user processing request is holding a resource needed by a higher priority user processing request; and re-queue the portion of the user processing request holding the resource to the front of one of the processing queues.
7. The multiprocessor system of claim 1 , the plurality of processors are further configured to: allocate a shared memory area to be shared by each of the processing queues; dedicate a portion of the shared memory area to each of the processing queues; and maintain a counter by each of the processing queues in order for each of the processing queues to time execution of said user processing requests or portions thereof.
8. A computer program product for efficiently allocating workload in middleware for a plurality of user processing requests among a plurality of processors in a multiprocessor system comprising: a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising computer readable program code configured to: assess a current processing workload for the plurality of user processing requests; subdivide a processing capability of the multiprocessor system into a plurality of processing units based on the current processing workload; start one or more processes to service the user processing requests; generate a processing queue for each of the processing units; assign a portion of each user processing request to one or more of the processing queues; service the portion of each user processing request by the one or more processes; allocate a variable predetermined time interval to each of the processing queues for which portions of the user processing requests assigned to a corresponding processing queue executed for a corresponding allocated time interval, wherein when a corresponding allocated time interval expires, a currently executing user processing request yields execution and signals the next in queue portion of the user processing requests to begin execution, and when a currently executing user processing request finishes execution prior to the expiration of the corresponding allocated time interval, determine whether to yield, execution of the corresponding allocated time interval or execute an additional portion of the user processing requests during the corresponding allocated time interval.
9. The computer program product of claim 8 , wherein said assigning is based on one or more of user processing request priority and user processing request service class.
10. The computer program product of claim 9 , further comprising computer readable program code configured to collect metrics associated with each of the user processing requests, wherein said processing request priority is based on the metrics; and allocate a given portion of said processing capability of the multiprocessor system to a given user processing request service class when a user processing request service class is employed.
11. The computer program product of claim 8 , wherein a number of said plurality of processing units determines an associated concurrency level number for the multiprocessor system for which a corresponding number of processing queues are generated and said servicing includes concurrently servicing portions of the user processing requests at the front of each corresponding processing queue; and wherein when one of the portions of the user processing requests is executing any remaining portions of the user processing requests are blocked from execution and when said one of the portions of the user processing requests finishes executing or when a processing time allocated to a given processing queue associated with said one of the portions of the user processing requests expires a next scheduled portion of the user processing requests are unblocked from execution.
12. The computer program product of claim 8 , further comprising computer readable program code configured to collect metrics associated with each of the user processing requests and compute a moving average of the actual execution time associated with each variable predetermined time interval, and when the variable predetermined time interval drops below a threshold, reduce the sampling rate for collecting said metrics to an interval that is a multiple of a corresponding actual execution time.
13. The computer program product of claim 8 , further comprising computer readable program code configured to determine when a portion of a user processing request is holding a resource needed by a higher priority user processing request; and re-queue the portion of the user processing request holding the resource to the front of one of the processing queues.
14. The computer program product of claim 8 , further comprising computer readable program code configured to: allocate a shared memory area to be shared by each of the processing queues; dedicate a portion of the shared memory area to each of the processing queues; and maintain a counter by each of the processing queues in order for each of the processing queues to time execution of said user processing requests or portions thereof.
Unknown
April 12, 2016
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.