SCHEDULING THREADS IN MULTI-CORE SYSTEMS
First Claim
1. A method to be executed at least in part in a computing device for scheduling threads in a multi-core processor system, the method comprising:
- receiving a thread to be scheduled for processing by the processor system;
determining an affinity status of the received thread;
assigning a sequence number to the thread based on a time of arrival of the thread; and
if the thread has a fixed affinity for a particular core, placing the thread in a per-processor queue for the particular core;
elseplacing the thread in a global run queue for all available cores.
2 Assignments
0 Petitions
Accused Products
Abstract
Scheduling of threads in a multi-core system is performed using per-processor queues for each core to hold threads with fixed affinity for each core. Cores are configured to pick the highest priority thread among the global run queue, which holds threads without affinity, and their respective per-processor queue. To select between two threads with same priority on both queues, the threads are assigned sequence numbers based on their time of arrival. The sequence numbers may be weighted for either queue to prioritize one over the other.
-
Citations
20 Claims
-
1. A method to be executed at least in part in a computing device for scheduling threads in a multi-core processor system, the method comprising:
-
receiving a thread to be scheduled for processing by the processor system; determining an affinity status of the received thread; assigning a sequence number to the thread based on a time of arrival of the thread; and if the thread has a fixed affinity for a particular core, placing the thread in a per-processor queue for the particular core;
elseplacing the thread in a global run queue for all available cores. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system for scheduling threads in a multi-core processor environment, the system comprising:
-
a memory; a processor coupled to the memory, comprising a plurality of distinct processing cores, the processor configured to; receive a thread to be processed; determine an affinity status of the received thread; assign a sequence number to the thread based on a time of arrival of the thread; weight the sequence number assigned to the thread; if the thread has a fixed affinity for one of the plurality of cores, place the thread in a per-processor queue for the core; and if the thread has no affinity, place the thread in a global run queue for all available cores of the plurality of cores. - View Dependent Claims (12, 15, 16)
-
- 11. The system of claim 11, wherein the sequence number is weighted by assigning a decremented sequence number to the thread if the thread is to be placed in a per-processor queue compared to a sequence number to be assigned to a thread to be placed to the global run queue.
-
17. A computer-readable storage medium with instructions encoded thereon for scheduling threads in a multi-core processor system, the instructions comprising:
-
receiving a thread to be scheduled for processing by the processor system; determining an affinity status of the received thread; assigning a sequence number to the thread based on a time of arrival of the thread; weighting the sequence number assigned to the thread based on one from a set of;
a predefined increment, a system condition, a number of currently running applications, an expected processing time of the thread, and a core type;if the thread has a fixed affinity for a particular core, placing the thread in a per-processor queue for the particular core based on a priority and the sequence number of the thread; and if the thread has no affinity, placing the thread in a global run queue for all available cores based on the priority and the sequence number of the thread. - View Dependent Claims (18, 19, 20)
-
Specification