# US 10,372,493 B2 · Thread and/or virtual machine scheduling for cores with diverse capabilities

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,493 B2
- Document ID: US10372493B2
- Status: Granted
- Kind: B2
- Application number: 14/978,182
- Filed: 2015-12-22
- Published: 2017-06-22
- Granted: 2019-08-06
- Earliest claimed: 2015-12-22
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Vijay Dhanraj; Gaurav Khanna; Russell J. Fenger; Monica Gupta
- Web page: https://patentgrep.com/patent/US10372493B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Apparatuses, methods and storage medium associated with scheduling of threads and/or virtual machines, are disclosed herein. In embodiments, an apparatus is provided with a scheduler of an operating system and/or a virtual machine monitor. The scheduler is to retrieve or receive capabilities of the cores of one or more multi-core processors of the apparatus with diverse capabilities, and schedule a plurality of threads for execution on selected one or ones of the cores, based at least in part on the capabilities of the cores and characteristics of the plurality of threads. The virtual machine monitor is to retrieve or receive capabilities of the cores, and schedule a plurality of virtual machines for execution on selected one or ones of the cores, based at least in part on the capabilities of the cores and respective priorities of the virtual machines. Other embodiments may be described and/or claimed.

## Claims

### Claim 1

An apparatus for computing, comprising:
one or more multi-core processors, each having a plurality of cores, with at least two of the plurality of cores having different capabilities; and
either a scheduler of an operating system or a virtual machine monitor;
wherein the scheduler is to retrieve or receive capabilities of the cores, and schedule a plurality of execution threads for execution on selected ones of a first plurality of capability ordered core sets, based at least in part on the capabilities of the first core sets and characteristics of the plurality of execution threads;
wherein the virtual machine monitor is to retrieve or receive capabilities of the cores, and schedule a plurality of virtual machines of the apparatus for execution on selected ones of a second plurality of capability ordered core sets, based at least in part on the capabilities of the second core sets and respective priorities of the virtual machines; and
wherein the scheduler or the virtual machine monitor on retrieval of the capabilities of the cores, is to form the first or second plurality of capability ordered core sets, with at least a first and a second core set, based at least in part on the capabilities of the cores, where the first core set having N cores is collectively more capable than the second core set having N-1 cores, N being an integer greater than 2, and the first and second core sets having at least one common core.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the scheduler or the virtual machine monitor is to further determine, on start-up or reset of the apparatus, whether capabilities of the cores are available to be retrieved, and on determination that the capabilities of the cores are available to be retrieved, perform the retrieval, and on retrieval of the core capabilities, form the first or second core sets, perform the scheduling based at least in part on the capabilities of the first or second core sets and characteristics of the plurality of execution threads or priorities of the virtual machines.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the scheduler or the virtual machine monitor is to determine whether capabilities of the cores are available by checking respective processor identification(s) of the one or more multi-core processors.

### Claim 4 (depends on 3)

The apparatus of claim 3, wherein the scheduler or the virtual machine monitor is to retrieve the capabilities of the cores from respective model specific registers (MSR) of the cores.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the scheduler is to further learn the characteristics of the plurality of execution threads.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein the scheduler is to schedule execution threads that execute in a foreground with an expected execution time in excess of an execution time threshold for execution in more capable cores or core sets.

### Claim 7 (depends on 5)

The apparatus of claim 5, wherein the scheduler is to schedule execution threads with priorities in excess of a priority threshold for execution in more capable cores or core sets.

### Claim 8 (depends on 5)

The apparatus of claim 5, wherein the scheduler is to schedule execution threads that perform pre-fetches in excess of a prefetch threshold in more capable cores or core sets.

### Claim 9 (depends on 5)

The apparatus of claim 5, wherein on learning more about the characteristics of the execution threads, the scheduler is to perform the scheduling based at least in part on the capabilities of the first or second core sets and a better understanding of the characteristics of the plurality of execution threads.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein on receipt of one or more updates to one or more capabilities of one or more cores, the scheduler or the virtual machine monitor is to perform the scheduling based at least in part on the updated capabilities of the first or second core sets and characteristics of the plurality of execution threads or priorities of the virtual machines.

### Claim 11

A method for computing, comprising:
retrieving or receiving, by a scheduler of an operating system or a virtual machine monitor of a computing device, capabilities of a plurality of cores of one or more multi-core processors of the computing device, from respective designated control registers of the cores, wherein at least two of the plurality of cores have different capabilities; and
forming, by the scheduler or the virtual machine monitor, a plurality of capability ordered core sets, with at least a first and a second core set, based at least in part on the capabilities of the cores, where the first core set having N cores is collectively more capable than the second core set having N-1 cores, N being an integer greater than 2, and the first and second core sets having at least one common core;
scheduling, by the scheduler, a plurality of execution threads for execution on selected ones of the capability ordered core sets, based at least in part on the capabilities of the core sets and characteristics of the plurality of execution threads, or scheduling, by the virtual machine monitor, a plurality of virtual machines of the computing device for execution on selected ones of the capability ordered core sets, based at least in part on the capabilities of the core sets and priorities of the virtual machines.

### Claim 12

One or more non-transitory computer-readable media comprising instructions that cause a computing device, in response to execution of the instructions by one or more of a plurality of cores of one or more multi-core processors of the computing device, to provide a scheduler of an operating system or a virtual machine monitor to the computing device;
wherein at least two of the plurality of cores have different capabilities;
wherein the scheduler is to retrieve capabilities of the cores, from respective designated control registers of the cores, and schedule a plurality of execution threads for execution on selected ones of a first plurality of capability ordered core sets, based at least in part on the capabilities of the first core sets and characteristics of the plurality of execution threads; and
wherein the virtual machine monitor is to retrieve capabilities of the cores, and schedule a plurality of virtual machines of the computing device for execution on selected ones of a second plurality of capability ordered core sets, based at least in part on the capabilities of the second core sets and respective priorities of the virtual machines;
wherein the scheduler or the virtual machine monitor on retrieval of the capabilities of the cores, is to form the first or second plurality of capability ordered core sets, with at least a first and a second core set, based at least in part on the capabilities of the cores, where the first core set having N cores is collectively more capable than the second core set having N-1 cores, N being an integer greater than 2, and the first and second core set having at least one common core.

### Claim 13 (depends on 12)

The non-transitory computer-readable media of claim 12, wherein the scheduler or the virtual machine monitor is to further determine, on start-up or reset of the computing device, whether capabilities of the cores are available to be retrieved, and on determination that the capabilities of the cores are available to be retrieved, perform the retrieval, and on retrieval of the core capabilities, perform the scheduling based at least in part on the capabilities of the first or second core sets and characteristics of the plurality of execution threads or priorities of the virtual machines.

### Claim 14 (depends on 13)

The non-transitory computer-readable media of claim 13, wherein the scheduler or the virtual machine monitor is to determine whether capabilities of the cores are available by checking respective processor identification(s) of the one or more multi-core processors.

### Claim 15 (depends on 14)

The non-transitory computer-readable media of claim 14, wherein the scheduler or the virtual machine monitor is to retrieve the capabilities of the cores from respective model specific registers (MSR) of the cores.

### Claim 16 (depends on 12)

The non-transitory computer-readable media of claim 12, wherein the scheduler is to further learn the characteristics of the plurality of execution threads.

### Claim 17 (depends on 16)

The computer-readable media of claim 16, wherein the scheduler is to schedule execution threads that execute in a foreground with an expected execution time in excess of an execution time threshold for execution in more capable cores or core sets.

### Claim 18 (depends on 16)

The non-transitory computer-readable media of claim 16, wherein the scheduler is to schedule execution threads with priorities in excess of a priority threshold for execution or execution threads that perform pre-fetches in excess of a prefetch threshold in more capable cores or core sets.

### Claim 19 (depends on 16)

The non-transitory computer-readable media of claim 16, wherein on learning more about the characteristics the execution threads, the scheduler is to perform the scheduling based at least in part on the capabilities of the first core sets and a better understanding of the characteristics of the plurality of execution threads.

### Claim 20

The non-transitory computer-readable media of 12, wherein on receipt of one or more updates to one or more capabilities of one or more cores, the scheduler or the virtual machine monitor is to perform the scheduling based at least in part on the updated capabilities of the second core sets and characteristics of the plurality of execution threads or priorities of the virtual machines.
