IP Library Granted Patent US 11,573,833
Granted Patent B2
US 11,573,833 · App. 16/527,697 · Granted Feb 7, 2023

Allocating cores to threads running on one or more processors of a storage system

Inventors: Jon I. Krasner (Coventry, RI); Edward P. Goodwin (Sturbridge, MA)
Assignee: EMC IP Holding Company LLC
G06F9/505G06N20/00G06N3/0445G06N3/08
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 11,573,833
App. No.
16/527,697
Granted
Feb 7, 2023
Kind
B2
Abstract

Allocating CPU cores to a thread running in a system that supports multiple concurrent threads includes training a first model to optimize core allocations to threads using training data that includes performance data, initially allocating cores to threads based on the first model, and adjusting core allocations to threads based on a second model that uses run time data and run time performance measurements. The system may be a storage system. The training data may include I/O workload data obtained at customer sites. The I/O workload data may include data about I/O rates, thread execution times, system response times, and Logical Block Addresses. The training data may include data from a site that is expected to run the second model. The first model may categorize storage system workloads and determine core allocations for different categories of workloads. Initially allocating cores to threads may include using information from the first model.

Claims (25)

1. A method of allocating cores to workloads of threads running on one or more processors in a storage system, comprising:

training a first model to optimize core allocations to the workloads of threads using training data that includes data from a site that is expected to run a second model;

categorizing, by the first model, the workloads of threads to different categories of the workloads of threads;

initially allocating at least some of the cores to the different categories of the workloads of threads based on information provided by the first model;

determining a potential number of cores to allocate to each of the different categories of the workloads of threads based on the second model that uses run time data and run time performance measurements corresponding to workloads that are currently running;

performing a plurality of iterations to dynamically adjust the core allocations to the workloads of threads by repeatedly determining the potential number of cores to allocate and adjusting the potential number of cores that are allocated at each iteration by:

adjusting, by the second model, the potential number of cores to allocate to the workloads of threads using an adjustment factor that corresponds to a difference divided by a damping factor, wherein the damping factor is greater than one, and a value for the damping factor may be set according to empirical observations of the storage system and other functional factors, and wherein the difference is the determined value of the potential number of the cores to allocate based on the second model minus a number of the cores allocated from a previous iteration.

2. The method, according to claim 1 , wherein the training data includes I/O workload data obtained at customer sites and wherein the I/O workload data includes data about I/O rates, thread execution times, system response times, and Logical Block Addresses.

3. The method, according to claim 1 , wherein the workloads of threads are threads of a hypervisor running on the storage system.

4. The method, according to claim 3 , wherein the hypervisor manages one or more guest operating systems.

5. A non-transitory computer readable medium containing software that allocates cores to workloads of threads running on one or more processors in a storage system, the software comprising:

executable code that trains a first model to optimize core allocations to the workloads of threads using training data that includes data from a site that is expected to run a second model;

executable code that categorizes, by the first model, the workloads of threads to different categories of the workloads of threads;

executable code that initially allocates at least some of the cores to the different categories of the workloads of threads based on information provided by the first model;

executable code that determines a potential number of cores to allocate to each of the different categories of the workloads of threads based on the second model that uses run time data and run time performance measurements corresponding to workloads that are currently running;

executable code that performs a plurality of iterations to dynamically adjust the core allocations to the workloads of threads by repeatedly determining the potential number of cores to allocate and adjusting the potential number of cores that are allocated at each iteration by: adjusting, by the second model, the potential number of cores to allocate to the workloads of threads using an adjustment factor that corresponds to a difference divided by a damping factor, wherein the damping factor is greater than one, and a value for the damping factor may be set according to empirical observations of the storage system and other functional factors, and wherein the difference is the determined value of the potential number of the cores to allocate based on the second model minus a number of the cores allocated from a previous iteration.

6. The non-transitory computer readable medium, according to claim 5 , wherein the training data includes I/O workload data obtained at customer sites and wherein the I/O workload data includes data about I/O rates, thread execution times, system response times, and Logical Block Addresses.

7. The non-transitory computer readable medium, according to claim 5 , wherein the workloads of threads are threads of a hypervisor running on the storage system.

8. The non-transitory computer readable medium, according to claim 7 , wherein the hypervisor manages one or more guest operating systems.

9. A storage system, comprising:

a plurality of interconnected director boards, each having at least one of CPUs and providing functionality for at least one of: a host adaptor that exchanges data with one of more hosts coupled to the storage system, a disk adaptor that exchanges data with one or more physical storage units of the storage system, and a remote adaptor that exchanges data with one or more remote storage systems;

a memory coupled to the plurality of interconnected director boards; and

a non-transitory computer-readable medium containing software that is executed by the at least one of the CPUs on the plurality of interconnected director boards, the software including executable code that trains a first model to optimize core allocations to workloads of threads running in the storage system using training data that includes data from a site that is expected to run a second model, executable code that categorizes, by the first model, the workloads of threads to different categories of the workloads of threads, executable code that initially allocates at least some of the cores to the different categories of the workloads of threads based on information provided by the first model, executable code that determines a potential number of cores to allocate to each of the different categories of the workloads of threads based on the second model that uses run time data and run time performance measurements corresponding to workloads that are currently running, executable code that performs a plurality of iterations to dynamically adjust the core allocations to the workloads of threads by repeatedly determining the potential number of cores to allocate and adjusting the potential number of cores that are allocated at each iteration by: adjusting, by the second model, the potential number of cores to allocate to the workloads of threads using an adjustment factor that corresponds to a difference divided by a damping factor, wherein the damping factor is greater than one, and a value for the damping factor may be set according to empirical observations of the storage system and other functional factors, and wherein the difference is the determined value of the potential number of the cores to allocate based on the second model minus a number of the cores allocated from a previous iteration.

10. The storage system, according to claim 9 , wherein the training data includes I/O workload data obtained at customer sites and wherein the I/O workload data includes data about I/O rates, thread execution times, system response times, and Logical Block Addresses.

11. The storage system, according to claim 9 , wherein the workloads of threads are threads of a hypervisor running on the storage system and wherein the hypervisor manages one or more guest operating systems.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: KRASNER, JON I.; GOODWIN, EDWARD P.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049918/0773 →