System and method for improved job processing to reduce contention for shared resources
First Claim
1. A method of processing candidate jobs with a data processor having a plurality of processors, the method comprising:
- maintaining, by a queue manager, one or more queues that each contain multiple candidate jobs that are to be executed by the data processor, wherein the queue manager associates each candidate job with one of a plurality of communication streams;
issuing, by a packet selector, a dequeue request to the queue manager, to deliver a number of candidate jobs for processing to the packet selector;
receiving, by the packet selector, a number of dequeued candidate jobs from the queue manager;
determining, by the packet selector, an ordered listing of candidate jobs, wherein the ordered listing of candidate jobs is a listing of candidate jobs in the order in which they are received from the queue manager;
identifying, by the packet selector, one or more snared resources of a plurality of shared resources required by any of the plurality of processors when executing a first candidate job in the ordered listing of candidate jobs, wherein each of the plurality of shared resources may be used by any of the plurality of processors when executing candidate jobs and when the one or more shared resources are used by a first of the plurality of processors to execute the first candidate job, the one or more shared resources are unavailable to the others of the plurality of processors; and
determining, by the packet selector, whether the first candidate job is eligible for execution, by;
determining an availability of the one or more shared resources required for the first candidate job,when the one or more shared resources required for the first candidate job are unavailable and no candidate jobs executing within the data processor are from the same communication stream as the first candidate job,determining that the first candidate job is not eligible for execution by any of the plurality of processors of the data processor, andwhen the one or more shared resources required for the first candidate job are available or one or more candidate jobs executing within the data processor are from the same communication stream as the first candidate job;
determining that the first candidate job is eligible for execution by any one of the plurality of processors of the data processor,executing, by the data processor, the eligible candidate job, andincrementing a usage counter for each of the one or more shared resources.
22 Assignments
0 Petitions
Accused Products
Abstract
A method of processing a job is presented. A packet selector determines a candidate job list including an ordered listing of candidate jobs. Each candidate job in the ordered listing belongs to a communication stream. One or more shared resources required for execution of a first job in the candidate job list are identified. Whether the first job is eligible for execution is determined by determining an availability of the one or more shared resources required for the first job, and, when the one or more shared resource required for the first job are unavailable and no jobs executing within the data processor are from the same communication stream as the first job, determining that the first job is not eligible for execution.
-
Citations
14 Claims
-
1. A method of processing candidate jobs with a data processor having a plurality of processors, the method comprising:
-
maintaining, by a queue manager, one or more queues that each contain multiple candidate jobs that are to be executed by the data processor, wherein the queue manager associates each candidate job with one of a plurality of communication streams; issuing, by a packet selector, a dequeue request to the queue manager, to deliver a number of candidate jobs for processing to the packet selector; receiving, by the packet selector, a number of dequeued candidate jobs from the queue manager; determining, by the packet selector, an ordered listing of candidate jobs, wherein the ordered listing of candidate jobs is a listing of candidate jobs in the order in which they are received from the queue manager; identifying, by the packet selector, one or more snared resources of a plurality of shared resources required by any of the plurality of processors when executing a first candidate job in the ordered listing of candidate jobs, wherein each of the plurality of shared resources may be used by any of the plurality of processors when executing candidate jobs and when the one or more shared resources are used by a first of the plurality of processors to execute the first candidate job, the one or more shared resources are unavailable to the others of the plurality of processors; and determining, by the packet selector, whether the first candidate job is eligible for execution, by; determining an availability of the one or more shared resources required for the first candidate job, when the one or more shared resources required for the first candidate job are unavailable and no candidate jobs executing within the data processor are from the same communication stream as the first candidate job, determining that the first candidate job is not eligible for execution by any of the plurality of processors of the data processor, and when the one or more shared resources required for the first candidate job are available or one or more candidate jobs executing within the data processor are from the same communication stream as the first candidate job; determining that the first candidate job is eligible for execution by any one of the plurality of processors of the data processor, executing, by the data processor, the eligible candidate job, and incrementing a usage counter for each of the one or more shared resources. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data processor, comprising:
- a plurality of processors, each processor in the plurality of processors being configured to execute jobs,
a queue manager, configured to; maintain one or more queues that each contain multiple candidate jobs that are to be executed by the data processor, wherein the queue manager associates each candidate job with one of a plurality of communication streams; a packet selector, configured to; issue a dequeue request to the queue manager, to deliver a number of candidate fobs for processing to the packet selector; receive a number of dequeued candidate jobs from the queue manager; determine an ordered listing of candidate jobs, wherein the ordered listing of candidate jobs is a listing of candidate jobs in the order in which they are received from the queue manager; identify one or more shared resources of a plurality of shared resources required by any of the plurality of processors when executing a first candidate job in the ordered listing of candidate jobs, wherein each of the plurality of shared resources may be used by any of the plurality of processors to execute the first candidate job, and when the one or more shared resources are used by a first of the plurality of processors to execute the first candidate job, the one or more shared resources are unavailable to the others of the plurality of processors; and determine whether the first candidate job is eligible for execution by; determining an availability of the one or more shared resources required for the first candidate job, when the one or more shared resources required for the first candidate job are unavailable and no candidate jobs executing within the data processor are from the same communication stream as the first candidate job, determining that the first candidate job is not eligible for execution by any of the plurality of processors of the data processor, and when the one or more shared resources required for the first candidate job are available or one or more candidate jobs executing within the data processor are from the same communication stream as the first candidate job, determining that the first candidate job is eligible for execution by any one of the plurality of processors of the data processor, executing, by the data processor, the eligible candidate job, and incrementing a usage counter for each of the one or more shared resources. - View Dependent Claims (10, 11, 12, 13, 14)
- a plurality of processors, each processor in the plurality of processors being configured to execute jobs,
Specification