IP Library Granted Patent US 10,346,317
Granted Patent B2
US 10,346,317 · App. 15/993,583 · Granted Jul 9, 2019

Determining cores to assign to cache hostile tasks

Inventors: Matthew G. Borlick (Tucson, AZ); Lokesh M Gupta (Tucson, AZ); Trung N. Nguyen (Tucson, AZ)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/128G06F9/4881G06F9/5083G06F12/084G06F12/0811G06F12/0871G06F12/12G06F2212/283G06F2212/314G06F2212/70
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,346,317
App. No.
15/993,583
Granted
Jul 9, 2019
Kind
B2
Abstract

Provided are a computer program product, system, and method for determining cores to assign to cache hostile tasks. A computer system has a plurality of cores. Each core is comprised of a plurality of processing units and at least one cache memory shared by the processing units on the core to cache data from a memory. A task is processed to determine one of the cores on which to dispatch the task. A determination is made as to whether the processed task is classified as cache hostile. A task is classified as cache hostile when the task accesses more than a threshold number of memory address ranges in the memory. The processed task is dispatched to at least one of the cores assigned to process cache hostile tasks.

Claims (64)

1. A computer program product for dispatching tasks in a computer system having a memory shared by tasks executing in the computer system, the computer program product comprising a computer readable storage medium having computer readable program code embodied therein that when executed performs operations, the operations comprising:

providing an assignment of memory access categories to processing units, wherein each memory access category of the memory access categories indicates a pattern of memory accesses;

providing, for each task of a plurality of tasks, an assignment of a memory access category of the memory access categories to the task; and

using the assignment of memory access categories to processing units to dispatch a task to a processing unit assigned to the memory access category assigned to the task.

2. The computer program product of claim 1 , wherein the memory access categories include a cache hostile access pattern in which a task accesses more than a threshold number of memory address ranges.

3. The computer program product of claim 2 , wherein the operations further comprise:

determining whether each task of the tasks accesses a threshold number of memory address ranges; and

indicating for each task of the tasks accessing the threshold number of memory address ranges that the memory access category is cache hostile.

4. The computer program product of claim 1 , wherein the operations further comprise:

providing a mapping of memory address ranges to memory access categories; and

using the mapping to indicate the assignment of the memory access category to each task of the tasks based on a memory address range accessed by the task.

5. The computer program product of claim 1 , wherein the operations further comprise:

processing computer program code in which the tasks are coded to determine memory address ranges in the memory accessed by the tasks;

gathering information on task resource usage for each of the memory access categories;

based on the task resource usage, determining a number of at least one processing unit to assign to each of the memory access categories; and

indicating for each memory access category of the memory access categories the number of at least one processing unit determined to assign to the memory access category.

6. The computer program product of claim 5 , wherein the determining the number of at least one processing unit to assign to each memory access category of the memory access categories comprises:

determining whether tasks operating in a memory address range corresponding to a memory access category of the memory access categories consume a threshold amount of processing resources; and

indicating that the memory access category is assigned multiple processing units in response to determining that the tasks operating in the memory address range corresponding to the memory access category consume more than the threshold amount of processing resources.

7. The computer program product of claim 6 , wherein the operations further comprise:

indicating in a dispatch table having an entry for each memory access category of the memory access categories, at least one processing unit assigned to process tasks assigned to the memory access category and a processor chip including the at least one processing unit assigned to the memory access category.

8. A system for dispatching tasks, comprising:

a memory;

a plurality of processing units;

a computer readable storage medium having computer readable program code embodied therein that when executed performs operations, the operations comprising:

providing an assignment of memory access categories to processing units, wherein each memory access category of the memory access categories indicates a pattern of memory accesses;

providing, for each task of a plurality of tasks, an assignment of a memory access category of the memory access categories to the task; and

using the assignment of memory access categories to processing units to dispatch a task to a processing unit assigned to the memory access category assigned to the task.

9. The system of claim 8 , wherein the memory access categories include a cache hostile access pattern in which a task accesses more than a threshold number of memory address ranges.

10. The system of claim 9 , wherein the operations further comprise:

determining whether each task of the tasks accesses a threshold number of memory address ranges; and

indicating for each task of the tasks accessing the threshold number of memory address ranges that the memory access category is cache hostile.

11. The system of claim 8 , wherein the operations further comprise:

providing a mapping of memory address ranges to memory access categories; and

using the mapping to indicate the assignment of the memory access category to each task of the tasks based on a memory address range accessed by the task.

12. The system of claim 8 , wherein the operations further comprise:

processing computer program code in which the tasks are coded to determine memory address ranges in the memory accessed by the tasks;

gathering information on task resource usage for each of the memory access categories;

based on the task resource usage, determining a number of at least one processing unit to assign to each of the memory access categories; and

indicating for each memory access category of the memory access categories the number of at least one processing unit determined to assign to the memory access category.

13. The system of claim 12 , wherein the determining the number of at least one processing unit to assign to each memory access category of the memory access categories comprises:

determining whether tasks operating in a memory address range corresponding to a memory access category of the memory access categories consume a threshold amount of processing resources; and

indicating that the memory access category is assigned multiple processing units in response to determining that the tasks operating in the memory address range corresponding to the memory access category consume more than the threshold amount of processing resources.

14. The system of claim 13 , wherein the operations further comprise:

indicating in a dispatch table having an entry for each memory access category of the memory access categories, at least one processing unit assigned to process tasks assigned to the memory access category and a processor chip including the at least one processing unit assigned to the memory access category.

15. A method for dispatching tasks in a computer system having a memory shared by task executing in the computer system, comprising:

providing an assignment of memory access categories to processing units, wherein each memory access category of the memory access categories indicates a pattern of memory accesses;

providing, for each task of a plurality of tasks, an assignment of a memory access category of the memory access categories to the task; and

using the assignment of memory access categories to processing units to dispatch a task to a processing unit assigned to the memory access category assigned to the task.

16. The method of claim 15 , wherein the memory access categories include a cache hostile access pattern in which a task accesses more than a threshold number of memory address ranges.

17. The method of claim 16 , further comprising:

determining whether each task of the tasks accesses a threshold number of memory address ranges; and

indicating for each task of the tasks accessing the threshold number of memory address ranges that the memory access category is cache hostile.

18. The method of claim 15 , further comprising:

providing a mapping of memory address ranges to memory access categories; and

using the mapping to indicate the assignment of the memory access category to each task of the tasks based on a memory address range accessed by the task.

19. The method of claim 15 , further comprising:

processing computer program code in which the tasks are coded to determine memory address ranges in the memory accessed by the tasks;

gathering information on task resource usage for each of the memory access categories;

based on the task resource usage, determining a number of at least one processing unit to assign to each of the memory access categories; and

indicating for each memory access category of the memory access categories the number of at least one processing unit determined to assign to the memory access category.

20. The method of claim 19 , wherein the determining the number of at least one processing unit to assign to each memory access category of the memory access categories comprises:

determining whether tasks operating in a memory address range corresponding to a memory access category of the memory access categories consume a threshold amount of processing resources; and

indicating that the memory access category is assigned multiple processing units in response to determining that the tasks operating in the memory address range corresponding to the memory access category consume more than the threshold amount of processing resources.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2018
From: BORLICK, MATTHEW G.; GUPTA, LOKESH M.; NGUYEN, TRUNG N.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 046006/0977 →
Continuity (2)
Continuation 15264406 · Sep 13, 2016
Related Publication 20180276144A1 · Sep 27, 2018