IP Library › Granted Patent US 12,277,438
Granted Patent B2
US 12,277,438 · App. 17/530,681 · Granted Apr 15, 2025

Migration between CPU cores

Inventors: Kent Prosch (Boulder, CO); Matthew Weber (Wichita, KS); Arindam Banerjee (Boulder, CO); Ben McDavitt (Wichita, KS)
Assignee: NETAPP, INC.
G06F9/4856G06F9/48G06F9/4812G06F9/50G06F9/505G06F15/16G06F2209/482
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 12,277,438
App. No.
17/530,681
Granted
Apr 15, 2025
Kind
B2
Abstract

Methods, non-transitory machine-readable media, and computing devices for transitioning tasks and interrupt service routines are provided. An example method includes processing, by a plurality of processor cores of a storage controller, tasks and interrupt service routines. A performance statistic is determined corresponding to the plurality of processor cores. Based on detecting that the performance statistic passes a threshold, a number of the plurality of processor cores that are assigned to the tasks and the interrupt service routines are reduced.

Claims (67)

1. A method comprising:

processing, by a plurality of processor cores of a storage controller, one or more tasks;

generating, by the storage controller, a mapping of the one or more tasks to the plurality of processor cores;

accessing, by the storage controller, the mapping to identify a second one or more processor cores;

identifying, based on the mapping by a workload application executing on the storage controller in response to a performance statistic corresponding to the plurality of processor cores meeting a threshold, a first task of the one or more tasks to migrate from a first one or more processor cores to the second one or more processor cores of the plurality of processor cores, the second one or more processor cores being different than the first one or more processor cores;

migrating, by the workload application executing on the storage controller in response to the identifying the first task, the first task from the first one or more processor cores to the second one or more processor cores, by:

blocking, by the workload application executing on the storage controller, the first task from running on the first one or more processor cores while the first one or more processor cores remain enabled to execute the workload application; and

unblocking, by the workload application executing on the storage controller, the first task to run on the second one or more processor cores in response to associating the first task with the second one or more processor cores.

2. The method of claim 1 , further comprising:

processing, by the storage controller, one or more interrupt service routines;

identifying, by the workload application executing on the storage controller in response to the performance statistic corresponding to the plurality of processor cores meeting the threshold, a first interrupt service routine of the one or more interrupt service routines to migrate from the first one or more processor cores to the second one or more processor cores; and

migrating, by the workload application executing on the storage controller, the first interrupt service routine from the first one or more processor cores to the second one or more processor cores.

3. The method of claim 2 , wherein the migrating the first interrupt service routine further comprises:

disabling, by the workload application executing on the storage controller, the first interrupt service routine on the first one or more processor cores;

associating, by the workload application executing on the storage controller, the first interrupt service routine with the second one or more processor cores; and

enabling, by the workload application executing on the storage controller, the first interrupt service routine on the second one or more processor cores.

4. The method of claim 2 , wherein the mapping further includes a mapping of the one or more interrupt service routines to the one or more processor cores and a mapping of the one or more tasks to the one or more interrupt service routines.

5. The method of claim 1 , wherein the performance statistic meets the threshold based on at least one of an imbalance in a load among the plurality of processor cores, a failure of one or more of the plurality of processor cores, or a modification of a configuration of the plurality of processor cores.

6. The method of claim 1 , further comprising:

measuring, by the storage controller, one or more performance statistics, wherein the performance statistic is selected from the one or more performance statistics; and

rebalancing, by the storage controller, the one or more tasks among the plurality of processor cores based on the performance statistics.

7. The method of claim 1 , further comprising:

mapping, dynamically by the storage controller, each task of the one or more tasks to a target processor core of the plurality of processor cores based on latency and workload of the plurality of processor cores.

8. A non-transitory machine-readable medium having stored thereon instructions which when executed by at least one machine, causes the at least one machine to:

process one or more tasks and one or more interrupt service routines on one or more processor cores of the at least one machine;

receive a mapping of the one or more tasks to the one or more processor cores and the one or more interrupt service routines to the one or more processor cores;

identify a second subset of processor cores based on the received mapping;

identify, based on the received mapping, a first task of the one or more tasks and a first interrupt service routine of the one or more interrupt service routines to migrate from a first subset of processor cores of the one or more processor cores to the second subset of processor cores, the second subset of processor cores being different than the first subset of processor cores;

migrate the first interrupt service routine from the first subset of processor cores to the second subset of processor cores; and

block the first task from running on the first subset of processor cores while the first subset of processor cores remain enabled to execute a workload application;

associate the first task with the second subset of processor cores; and

unblock the first task to run on the second subset of processor cores.

9. The non-transitory machine-readable medium of claim 8 , wherein the instructions when executed further cause the at least one machine to:

identify, by the workload application in response to a performance statistic meeting a threshold, a first interrupt service routine of the plurality of interrupt service routines to migrate from the first subset of processor cores to the second subset of processor cores; and

migrate, by the workload application, the first interrupt service routine from the first subset of processor cores to the second subset of processor cores.

10. The non-transitory machine-readable medium of claim 9 , wherein the migrate the first interrupt service routine further comprises:

disable, by the workload application, the first interrupt service routine on the first subset of processor cores;

associate, by the workload application, the first interrupt service routine with the second subset processor cores; and

enable, by the workload application, the first interrupt service routine on the second subset processor cores.

11. The non-transitory machine-readable medium of claim 8 , wherein the instructions when executed further cause the at least one machine to:

map, based on at least one of latency and workload, the one or more tasks and the one or more interrupt service routines to the one or more processor cores to identify the second processor core.

12. The non-transitory machine-readable medium of claim 8 , wherein the first task is identified in response to a performance statistic corresponding to the one or more processor cores meeting a threshold, and wherein the performance statistic meets the threshold based on at least one of an imbalance in a load among the one or more processor cores, a failure of one or more of the one or more processor cores, or a modification of a configuration of the one or more processor cores.

13. The non-transitory machine-readable medium of claim 8 , wherein the received mapping further includes a mapping of the one or more tasks to the one or more interrupt service routines to identify the second subset of the of processor cores.

14. The non-transitory machine-readable medium of claim 8 , wherein the first task is migrated to a predefined processor core of the second subset of processor cores.

15. A computing device comprising:

a memory having stored thereon instructions for performing a method of rebalancing one or more tasks and one or more interrupt service routines among one or more processor cores; and

a processor coupled to the memory, the processor configured to execute the instructions to:

identify a second subset of processor cores among the one or more processor cores based on a mapping of the one or more tasks to the one or more processor cores and the one or more interrupt service routines to the one or more processor cores;

identify, based on the mapping by a workload application executed by the processor in response to a performance measurement meeting a threshold, a first task of the one or more tasks and a first interrupt service routine of the one or more interrupt service routines to migrate from a first subset of processor cores of the one or more processor cores to the second subset of processor cores of the one or more processor cores;

migrate, by the workload application, the first task from the first subset of processor cores to the second subset of processor cores; and

migrate, by the workload application, the first interrupt service routine from the first subset of processor cores to the second subset processor cores, by further executing the instructions to:

disable, by the workload application, the first interrupt service routine on the first subset of processor cores while the first subset of processor cores remain enabled to execute the workload application;

associate, by the workload application, the first interrupt service routine with the second subset of processor cores; and

enable, by the workload application, the first interrupt service routine on the second subset of processor cores.

16. The computing device of claim 15 , wherein the processor is further configured to execute the instructions to migrate the first task to the second subset of processor cores, by:

block, by the workload application, the first task from running on the first subset of processor cores;

assign the first task to the second subset of processor cores; and

unblock, by the workload application, the first task to run on the second subset processor cores.

17. The computing device of claim 15 , wherein the processor is further configured to execute the instructions to:

generate the mapping of the one or more tasks to the one or more processor cores, and the one or more interrupt service routines to the one or more processor cores, wherein the generated mapping further includes a mapping of the one or more tasks to the one or more interrupt service routines; and

identify the second subset of processor cores based on the generated mapping.

18. The computing device of claim 15 , wherein the performance measurement meets the threshold based on at least one of an imbalance in a load among the one or more processor cores, a failure of one or more of the one or more processor cores, or a modification of a configuration of the one or more processor cores.

19. The computing device of claim 15 , wherein the processor is further configured to execute the instructions to:

receive the mapping of the one or more tasks to the one or more processor cores, and the one or more interrupt service routines to the one or more processor cores, wherein the received mapping further includes a mapping of the one or more tasks to the one or more interrupt service routines; and

identify the second subset of processor cores based on the received mapping.

20. The computing device of claim 15 , wherein the processor is further configured to execute the instructions to:

dynamically determine, based on measured latency and workload from executing the workload application, a target processor core of the first subset of processor cores with which to begin the migration of the first task.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2021
From: PROSCH, KENT; WEBER, MATTHEW; BANERJEE, ARINDAM; MCDAVITT, BEN
To: NETAPP, INC.
Reel/Frame 058162/0088 →
Continuity (4)
Continuation 16653079 · Oct 15, 2019
Continuation 15890481 · Feb 7, 2018
Continuation 14836331 · Aug 26, 2015
Related Publication 20220075649A1 · Mar 10, 2022
References Cited (29)
US 5721931A · Gephardt et al. · 1998 [cited by applicant]
US 7797512B1 · Cheng et al. · 2010 [cited by applicant]
US 8327187B1 · Metcalf · 2012 [cited by applicant]
US 8489837B1 · Lee · 2013 [cited by applicant]
US 8892916B2 · Bieswinger · 2014 [cited by applicant]
US 9910700B2 · Prosch et al. · 2018 [cited by applicant]
US 10459759B2 · Prosch et al. · 2019 [cited by applicant]
US 11182202B2 · Prosch et al. · 2021 [cited by applicant]
US 20040215987A1 · Farkas et al. · 2004 [cited by applicant]
US 20080148015A1 · Takamoto et al. · 2008 [cited by applicant]
US 20080163239A1 · Sugumar · 2008 [cited by applicant]
US 20090007121A1 · Yamada · 2009 [cited by applicant]
US 20090150474A1 · Schneider · 2009 [cited by applicant]
US 20090187912A1 · Lee · 2009 [cited by applicant]
US 20100299472A1 · Tanaka et al. · 2010 [cited by applicant]
US 20120017219A1 · Hsieh et al. · 2012 [cited by applicant]
US 20130238912A1 · Priel · 2013 [cited by applicant]
US 20140026146A1 · Jahagirdar et al. · 2014 [cited by applicant]
US 20140082630A1 · Ginzburg et al. · 2014 [cited by applicant]
US 20140129808A1 · Naveh et al. · 2014 [cited by applicant]
US 20140181830A1 · Naik et al. · 2014 [cited by applicant]
US 20150200854A1 · Buchnik · 2015 [cited by applicant]
US 20170041191A1 · Kato · 2017 [cited by examiner]
US 20180083764A1 · Dhakshinamurthy · 2018 [cited by applicant]
Extended European Search Report for Application No. EP16840221, mailed Apr. 3, 2019, 17 pages. [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/US2016/049051, mailed Dec. 30, 2016, 20 pages. [cited by applicant]
Xing et al. “Utilization-Controlled Task Consolidation for Power Optimization in Multi-Core Real-Time Systems,” Embedded and Real-time Computing Systems and Applications (RTCSA) IEEE 17th International Conference, Aug. … [cited by applicant]
International Preliminary Report on Patentability for Application No. PCT/US2016/049051 mailed on Feb. 27, 2018, 10 pages. [cited by applicant]
Examination Report for European Application No. 16840221.2, dated Jul. 14, 2020, 17 pages. [cited by applicant]