IP Library › Granted Patent US 12,602,262
Granted Patent B2
US 12,602,262 · App. 18/367,042 · Granted Apr 14, 2026

Shared resource pool with periodic rebalancing in a multi-core system

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Jenny Derzhavetz (Raanana, IL)
Assignee: Dell Products L.P.
G06F9/5077G06F9/505G06F9/5083G06F2209/5011
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,602,262
App. No.
18/367,042
Filed
Sep 12, 2023
Granted
Apr 14, 2026
Kind
B2
Art Unit
2199
USPC
718/104
Abstract

A percentage of the resource units contained in a shared resource pool of a data storage system is loaded into a global partition, and the resource units not loaded into the global partition are loaded into per-core partitions. Each per-core partition corresponds to one of multiple processor cores in the data storage system. Resource units are allocated from each one of the per-core partitions only to a work flow executing on the corresponding processor core. The number of available resource units in each one of the per-core partitions is periodically rebalanced by moving resource units between the global partition and that per-core partition.

Claims (54)

1 . A method comprising:

loading a predetermined percentage of a plurality of resource units contained in a shared resource pool of a data storage system into a global partition within the shared resource pool;

loading those resource units contained in the shared resource pool that were not loaded into the global partition into a plurality of per-core partitions within the shared resource pool, wherein each one of the per-core partitions corresponds to a respective one of a plurality of processor cores in the data storage system;

for each one of the per-core partitions, allocating resource units from that per-core partition only to a work flow executing on the corresponding processor core;

periodically rebalancing each one of the per-core partitions by moving resource units between the global partition and the per-core partition, wherein the rebalancing includes:

calculating a local exhaustion time interval for the per-core partition, wherein the local exhaustion interval comprises an estimated amount of time until all resource units currently available in the per-core partition are exhausted,

obtaining a target exhaustion time interval, and

moving resource units from the global partition to the per-core partition in response to a determination that the local exhaustion time interval for the per-core partition is smaller than the target exhaustion time interval; and

wherein periodically rebalancing at least one of the per-core partitions is triggered by a determination that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds a maximum rebalance time interval.

2 . The method of claim 1 , wherein periodically rebalancing each one of the per-core partitions further comprises:

moving resource units from the per-core partition to the global partition in response to a determination that the local exhaustion time interval for the per-core partition is larger than the target exhaustion time interval.

3 . The method of claim 2 , wherein periodically rebalancing each one of the per-core partitions further comprises:

moving resource units from the per-core partition to the global partition in response to a determination that no pool operation has been performed on the per-core partition since a last time that the per-core partition was rebalanced.

4 . The method of claim 3 , wherein periodically rebalancing each one of the per-core partitions further comprises:

moving resource units from the global partition to the per-core partition in response to a determination that the per-core partition is empty and an allocation request was issued by the work flow executing on the corresponding processor core.

5 . The method of claim 1 , wherein obtaining the target exhaustion time interval comprises calculating the target exhaustion time interval as an average of local exhaustion time intervals calculated for the plurality of per-core partitions.

6 . The method of claim 1 , wherein periodically rebalancing at least one of the per-core partitions is triggered by a determination made by monitoring logic executed after processing a pool operation on a per-core partition that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds the maximum rebalance time interval.

7 . The method of claim 1 , wherein periodically rebalancing at least one of the per-core partitions is triggered by a determination that a per-core partition currently contains insufficient available resource units to perform an allocation request issued by the workflow executing on the corresponding processor core.

8 . The method of claim 1 , further comprising:

executing a plurality of per-core heartbeat timer threads, wherein each one of the per-core heartbeat timer threads executes on a corresponding respective one of the processor cores; and

wherein periodically rebalancing at least one of the per-core partitions is triggered by one of the per-core heartbeat timer threads determining that an amount of time since a last time that rebalancing was performed on the per-core partition corresponding to the processor core executing the per-core heartbeat timer exceeds the maximum rebalance time interval.

9 . A data storage system comprising:

processing circuitry and a memory;

a plurality of non-volatile data storage drives; and

wherein the memory has program code stored thereon, wherein the program code, when executed by the processing circuitry, causes the processing circuitry to:

load a predetermined percentage of a plurality of resource units contained in a shared resource pool of a data storage system into a global partition within the shared resource pool;

load those resource units contained in the shared resource pool that were not loaded into the global partition into a plurality of per-core partitions within the shared resource pool, wherein each one of the per-core partitions corresponds to a respective one of a plurality of processor cores in the data storage system;

for each one of the per-core partitions, allocate resource units from that per-core partition only to a work flow executing on the corresponding processor core; and

periodically rebalance each one of the per-core partitions by moving resource units between the global partition and the per-core partition, at least in part by causing the processing circuitry to:

calculate a local exhaustion time interval for the per-core partition, wherein the local exhaustion interval comprises an estimated amount of time until all resource units currently available in the per-core partition are exhausted;

obtain a target exhaustion time interval, and

move resource units from the global partition to the per-core partition in response to a determination that the local exhaustion time interval for the per-core partition is smaller than the target exhaustion time interval; and

wherein the processing circuitry is triggered to periodically rebalance at least one of the per-core partitions by a determination that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds a maximum rebalance time interval.

10 . The data storage system of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to periodically rebalance each one of the per-core partitions at least in part by causing the processing circuitry to:

move resource units from the per-core partition to the global partition in response to a determination that the local exhaustion time interval for the per-core partition is larger than the target exhaustion time interval.

11 . The data storage system of claim 10 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to periodically rebalance each one of the per-core partitions at least in part by causing the processing circuitry to:

move resource units from the per-core partition to the global partition in response to a determination that no pool operation has been performed on the per-core partition since a last time that the per-core partition was rebalanced.

12 . The data storage system of claim 11 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to periodically rebalance each one of the per-core partitions at least in part by causing the processing circuitry to:

move resource units from the global partition to the per-core partition in response to a determination that the per-core partition is empty and an allocation request was issued by the work flow executing on the corresponding processor core.

13 . The data storage system of claim 9 , wherein the target exhaustion time interval is obtained by calculating the target exhaustion time interval as an average of local exhaustion time intervals calculated for the plurality of per-core partitions.

14 . The data storage system of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to trigger periodic rebalancing of at least one of the per-core partitions at least in part in response to a determination made by monitoring logic executed after processing a pool operation on the per-core partition that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds the maximum rebalance time interval.

15 . The data storage system of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to trigger periodic rebalancing of at least one of the per-core partitions in response to a determination that the per-core partition currently contains insufficient available resource units to perform an allocation request issued by the workflow executing on the corresponding processor core.

16 . The data storage system of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

execute a plurality of per-core heartbeat timer threads, wherein each one of the per-core heartbeat timer threads executes on a respective one of the processor cores; and

trigger at least one of the per-core partitions to be periodically rebalanced when the heartbeat timer thread executing on the processor core corresponding to the per-core partition determines that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds the maximum rebalance time interval.

17 . A computer program product including a non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed on processing circuitry, cause the processing circuitry to perform steps including:

loading a predetermined percentage of a plurality of resource units contained in a shared resource pool of a data storage system into a global partition within the shared resource pool;

loading those resource units contained in the shared resource pool that were not loaded into the global partition into a plurality of per-core partitions within the shared resource pool, wherein each one of the per-core partitions corresponds to a respective one of a plurality of processor cores in the data storage system;

for each one of the per-core partitions, allocating resource units from that per-core partition only to a work flow executing on the corresponding processor core;

periodically rebalancing each one of the per-core partitions by moving resource units between the global partition and the per-core partition, wherein the rebalancing includes:

calculating a local exhaustion time interval for the per-core partition, wherein the local exhaustion interval comprises an estimated amount of time until all resource units currently available in the per-core partition are exhausted,

obtaining a target exhaustion time interval, and

moving resource units from the global partition to the per-core partition in response to a determination that the local exhaustion time interval for the per-core partition is smaller than the target exhaustion time interval; and

wherein periodically rebalancing at least one of the per-core partitions is triggered by a determination that an amount of time since a last time that rebalancing was performed on the per-core partition exceeds a maximum rebalance time interval.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: SHVEIDEL, VLADIMIR; DERZHAVETZ, JENNY
To: DELL PRODUCTS L.P.
Reel/Frame 065147/0242 →
Continuity (1)
Related Publication 20250086028A1 · Mar 13, 2025
References Cited (19)
US 6078943A · Yu · 2000 [cited by examiner]
US 7620953B1 · Tene · 2009 [cited by examiner]
US 7669202B1 · Tene · 2010 [cited by examiner]
US 8302102B2 · Anand · 2012 [cited by examiner]
US 9104496B2 · Jacobs · 2015 [cited by examiner]
US 9569277B1 · Cropper · 2017 [cited by examiner]
US 9740762B2 · Horowitz · 2017 [cited by examiner]
US 9805108B2 · Merriman · 2017 [cited by examiner]
US 9826041B1 · Dhoolam · 2017 [cited by examiner]
US 10608954B2 · Gosselin-Harris · 2020 [cited by examiner]
US 10673981B2 · Sahay · 2020 [cited by examiner]
US 11327812B1 · Shveidel · 2022 [cited by examiner]
US 11595469B2 · Ferraro · 2023 [cited by examiner]
US 11789773B2 · Lee · 2023 [cited by examiner]
US 20100145668A1 · Fisher · 2010 [cited by examiner]
US 20130326185A1 · Loh et al. · 2013 [cited by applicant]
US 20150331465A1 · Slik · 2015 [cited by applicant]
US 20180143862A1 · Saeidi · 2018 [cited by examiner]
US 20230267456A1 · Garner et al. · 2023 [cited by applicant]