IP Library Granted Patent US 10,534,542
Granted Patent B2
US 10,534,542 · App. 15/445,919 · Granted Jan 14, 2020

Dynamic core allocation for consistent performance in a non-preemptive scheduling environment

Inventors: Sagar Trehan (San Jose, CA); Gurunatha Karaje (San Jose, CA); Zhaosheng Zhu (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F3/061
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,534,542
App. No.
15/445,919
Granted
Jan 14, 2020
Kind
B2
Abstract

Methods and systems are presented for allocating resources based on dynamic core allocation in a scheduler hierarchy of a storage system. One method includes reserving a set of core processors including one or more core processors for execution of system IOs in the data storage system. The data storage system includes a controller including non-volatile memory (NVRAM) for handling IOs and a first central processing unit (CPU) having a plurality of core processors, a solid state memory (SSD) configured as a read cache memory, and permanent data storage. The method includes dynamically adjusting the number of core processors in the set based on a current utilization of a resource. The method includes scheduling an IO on a first core processor of the plurality of core processors that has the least magnitude of scheduled utilization.

Claims (60)

1. A method comprising:

reserving a set of one or more core processors for execution of system inputs/outputs (IOs) in a data storage system, wherein the data storage system comprises a controller including non-volatile memory (NVRAM) and a central processing unit (CPU) having a plurality of core processors including the set of one or more core processors, a solid state drive (SSD) configured as a read cache memory, and persistent data storage, wherein user IOs are executed on any of the plurality of core processors and system IOs are executed exclusively on the one or more core processors of the set, and wherein the set includes fewer than all of the plurality of core processors;

dynamically adjusting the number of core processors in the set based on a current utilization of a resource;

scheduling a system IO on a core processor of the set of core processors that has the least magnitude of scheduled utilization among the set; and

scheduling a user IO on a core processor of the plurality of core processors that has the least magnitude of scheduled utilization among the plurality of core processors.

2. The method of claim 1 , wherein scheduling a system IO comprises:

scheduling the system IO on a thread of the first core processor, wherein the each core processor of the plurality of core processors includes one or more logical threads.

3. The method of claim 1 , further comprising:

receiving the system IO for scheduling; and

determining that the received IO is a system IO.

4. The method of claim 1 , further comprising:

receiving the user IO for scheduling; and

determining that the received IO is a user IO.

5. The method of claim 1 , further comprising:

determining a corresponding magnitude of scheduled utilization for each of the plurality of core processors,

wherein the magnitude is based on a queue buildup and a service time.

6. The method of claim 5 , wherein the magnitude is a product of queue buildup and the service time, wherein the queue buildup is the number of tasks in a corresponding queue, and wherein the service time is the average time to execute tasks in the corresponding queue, wherein the magnitude is an averaged total time to execute tasks in the corresponding queue.

7. The method of claim 1 , further comprising:

determining the current utilization of the resource based on a dynamic weight of a related system IO that utilizes the resource, wherein the dynamic weight reflects the current utilization of the resource.

8. The method of claim 7 , wherein the resource comprises the NVRAM, and wherein the related system IO flushes the NVRAM by storing data from the NVRAM to the persistent data storage.

9. The method of claim 7 , wherein the resource comprises free space on the persistent data storage, and wherein the related system IO generates more free space on the persistent data storage by compacting existing data.

10. The method of claim 7 , wherein the resource comprises unclaimed storage space marked for deletion on the persistent data storage, and wherein the related system IO reclaims the storage space by deleting at least a portion of the unclaimed storage space marked for deletion.

11. The method of claim 1 , wherein the data storage system comprises a hybrid array such that the persistent data storage includes hard disk drives (HDDs).

12. The method of claim 1 , wherein the data storage system comprises an all flash array, such that the persistent data storage includes SSDs.

13. The method of claim 1 , wherein the plurality of core processors comprise a plurality of logical core processors.

14. The method of claim 1 , wherein adjusting the number of core processors in the set comprises:

allocating one or more of the plurality of core processors to the set or deallocating one or more core processors of the plurality from the set.

15. A non-transitory computer-readable medium comprising program instructions to:

reserve a set of one or more core processors for execution of system inputs/outputs (IOs) in a data storage system, wherein the data storage system comprises a controller including non-volatile memory (NVRAM) and a central processing unit (CPU) having a plurality of core processors including the set of one or more core processors, a solid state drive (SSD) configured as a read cache memory, and persistent data storage, wherein user IOs are executed on any of the plurality of core processors and system IOs are executed exclusively on the one or more core processors of the set, and wherein the set includes fewer than all of the plurality of core processors;

dynamically adjust the number of core processors in the set based on a current utilization of a resource;

schedule a system IO on a core processor of the set of core processors that has the least magnitude of scheduled utilization among the set; and

schedule a user TO on a core processor of the plurality of core processors that has the least magnitude of scheduled utilization among the plurality of core processors.

16. The non-transitory computer-readable medium of claim 15 , further comprising program instructions to:

receive the system TO for scheduling; and

determine that the received IO is a system IO.

17. The non-transitory computer-readable medium of claim 15 , further comprising program instructions to:

receive the user IO for scheduling; and

determine that the received IO is a user IO.

18. The non-transitory computer-readable medium of claim 15 , further comprising program instructions to:

determine a corresponding magnitude of scheduled utilization for each of the plurality of core processors,

wherein the wherein the magnitude is a product of a queue buildup and a service time, wherein the queue buildup is the number of tasks in a corresponding queue, wherein the service time is the average time to execute tasks in the corresponding queue, and wherein the magnitude is an averaged total time to execute tasks in the corresponding queue.

19. The non-transitory computer-readable medium of claim 15 , further comprising program instructions to:

determine the current utilization of the resource based on a dynamic weight of a related system IO that utilizes the resource, wherein the dynamic weight reflects the current utilization of the resource.

20. A data storage system, comprising:

a controller comprising a non-volatile memory (NVRAM) and a central processing unit (CPU) comprising a plurality of core processors;

a solid state drive (SSD) configured as a read cache memory;

persistent data storage; and

a scheduler executed by the controller to:

reserve a set of one or more core processors, of the plurality of core processors, for execution of system inputs/outputs (IOs) in a data storage system, wherein user IOs are executed on any of the plurality of core processors and system IOs are executed exclusively on the one or more core processors of the set, and wherein the set includes fewer than all of the plurality of core processors;

dynamically adjust the number of core processors in the set based on a current utilization of a resource;

schedule a system IO on a core processor of the set of core processors that has the least magnitude of scheduled utilization among the set; and

schedule a user IO on a core processor of the plurality of core processors that has the least magnitude of scheduled utilization among the plurality of core processors.

21. The data storage system of claim 20 , wherein the scheduler executed by the controller is further to:

receive the system IO for scheduling; and

determine that the received IO is a system IO.

22. The data storage system of claim 20 , wherein the scheduler executed by the controller is further to:

determine a corresponding magnitude of scheduled utilization for each of the plurality of core processors,

wherein the wherein the magnitude is a product of a queue buildup and a service time, wherein the queue buildup is the number of tasks in a corresponding queue, wherein the service time is the average time to execute tasks in the corresponding queue, and wherein the magnitude is an averaged total time to execute tasks in the corresponding queue.

23. The data storage system of claim 20 , wherein the scheduler executed by the controller is further to:

determine the current utilization of the resource based on a dynamic weight of a related system IO that utilizes the resource, wherein the dynamic weight reflects the current utilization of the resource.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2017
From: ZHU, ZHAOSHENG
To: NIMBLE STORAGE, INC.
Reel/Frame 041885/0872 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 1, 2017
From: TREHAN, SAGAR; KARAJE, GURUNATHA
To: NIMBLE STORAGE, INC.
Reel/Frame 041427/0166 →
Continuity (4)
Continuation In Part 15270791 · Sep 20, 2016
Continuation In Part 14748179 · Jun 23, 2015
Provisional Application 62058015 · Sep 30, 2014
Related Publication 20170177221A1 · Jun 22, 2017
Cited By (2)
US 12,632,352 US 12,705,095