IP Library Granted Patent US 10,430,336
Granted Patent B2
US 10,430,336 · App. 15/494,601 · Granted Oct 1, 2019

Lock-free raid implementation in multi-queue architecture

Inventors: Michael Enz (Fargo, ND); Ashwin Kamath (Cedar Park, TX)
Assignee: Exten Technologies, Inc.
G06F12/0804G06F9/50G06F12/0868G06F12/0897G06F2212/1041G06F2212/262G06F2212/62
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,430,336
App. No.
15/494,601
Granted
Oct 1, 2019
Kind
B2
Abstract

Systems and methods (including hardware and software) are disclosed where all common RAID storage levels are implemented for multi-queue hardware by isolating RAID stripes to a single central processing unit (CPU) core affinity. Fixed CPU affinity is used for any piece of data that may be modified. Instead of blocking CPUs that must access or modify a piece of data, the request is efficiently moved to the CPU that owns that data. In this manner the system is completely asynchronous, efficient, and scalable.

Claims (35)

1. A method for lock-free RAID implementation, comprising:

receiving at a first core a client input/output (IO) request having a data address;

computing a stripe number as a function of the data address;

computing a central processing unit (CPU) core number as a function of the stripe number;

routing the request to a second core having the computed CPU core number;

updating a local data structure for the stripe number in a computer CPU cache on the second core;

and routing the request back to the first core.

2. The method of claim 1 , further comprising checking and updating a data cache in a local memory controller on the second core.

3. The method of claim 2 , further comprising updating data on drives consistently for the stripe number.

4. The method of claim 1 , further comprising completing the IO request.

5. The method of claim 1 , wherein neither the first core nor the second core have a lock on the stripe number.

6. A storage appliance, comprising:

a plurality of central processing unit (CPU) sockets, each socket including a plurality of cores,

wherein each core operates independently without locks, the storage appliance adapted to:

receive at a first core a client input/output (IO) request having a data address;

compute a stripe number as a function of the data address; computing a central processing unit (CPU) core number as a function of the stripe number;

route the request to a second core having the computed CPU core number;

update a local data structure for the stripe number in a computer CPU cache on the second core; and

route the request back to the first core.

7. The storage appliance of claim 6 , wherein the steps further comprise checking and updating data cache in a local memory controller on the second core.

8. The storage appliance of claim 7 , wherein the steps further comprise updating data on drives consistently for the stripe number.

9. The storage appliance of claim 6 , wherein the steps further comprise completing the IO request.

10. The storage appliance of claim 6 , wherein none of the plurality of cores has a lock on the stripe number.

11. A storage appliance, comprising:

a plurality of central processing unit (CPU) sockets, each socket including a plurality of cores;

wherein each core operates independently without locks;

wherein when acted upon by a processor, is adapted for performing the following steps:

receiving at a first core a client input/output (IO) request having a data address;

computing a stripe number as a function of the data address;

computing a central processing unit (CPU) core number as a function of the stripe number;

routing the request to a second core having the computed CPU core number;

updating a local data structure for the stripe number in a computer CPU cache on the second core; and

routing the request back to the first core, wherein none of the plurality of cores has a lock on the stripe.

12. The storage appliance of claim 11 , wherein the steps further comprise checking and updating a data cache in a local memory controller on the second core.

13. The storage appliance of claim 12 , wherein the steps further comprise updating data on drives consistently for the stripe number.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2020
From: EXTEN TECHNOLOGIES, INC.
To: OVH US LLC
Reel/Frame 054013/0948 →
CHANGE OF NAME Recorded Jul 25, 2018
From: MANGSTOR, INC.
To: EXTEN TECHNOLOGIES, INC.
Reel/Frame 046628/0576 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2017
From: ENZ, MICHAEL; KAMATH, ASHWIN
To: MANGSTOR, INC.
Reel/Frame 042122/0775 →
Continuity (1)
Related Publication 20180307439A1 · Oct 25, 2018