IP Library › Granted Patent US 10,922,135
Granted Patent B2
US 10,922,135 · App. 16/576,135 · Granted Feb 16, 2021

Dynamic multitasking for distributed storage systems by detecting events for triggering a context switch

Inventors: Lior Kamran (Rishon LeZion, IL); Amitai Alkalay (Kadima, IL); Zvi Schneider (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F9/4881G06F3/061G06F3/067G06F3/0659G06F9/522G06F9/542G06F13/362G06F13/4022
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,922,135
App. No.
16/576,135
Filed
Sep 19, 2019
Granted
Feb 16, 2021
Kind
B2
Art Unit
2184
USPC
710/20
Abstract

A method is disclosed for dynamic multitasking in a storage system, the storage system including a first storage server configured to execute a first I/O service process and one or more second storage servers, the method comprising: detecting a first event for triggering a context switch; transmitting to each of the second storage servers an instruction to stop transmitting internal I/O requests to the first I/O service process, the instruction including an identifier corresponding to the first I/O service process, the identifier being arranged to distinguish the first I/O service process from other first I/O service processes that are executed by the first storage server concurrently with the first I/O service process; deactivating the first I/O service process by pausing a frontend of the first I/O service process, and pausing one or more I/O providers of the first I/O service process; and executing a first context switch between the first I/O service process and a second process.

Claims (56)

1. A method for dynamic multitasking in a storage system, the storage system including a first storage server configured to execute a first I/O service process and one or more second storage servers, the method comprising:

detecting a first event for triggering a context switch;

causing the second storage servers to stop transmitting internal I/O requests to the first I/O service process;

deactivating the first I/O service process by pausing one or more components of the first I/O service process; and

after the first I/O service process is deactivated, executing a first context switch between the first I/O service process and a second process.

2. The method of claim 1 , wherein causing the second storage servers to stop transmitting internal I/O requests to the first I/O service process includes transmitting to each of the second storage servers an instruction to stop transmitting internal I/O requests to the first I/O service process.

3. The method of claim 2 , wherein the instruction includes an identifier corresponding to the first I/O service process, the identifier being arranged to distinguish the first I/O service process from other first I/O service processes that are executed by the first storage server concurrently with the first I/O service process.

4. The method of claim 1 , wherein:

the first I/O service process includes a frontend and a background component, and

deactivating the first I/O service process includes pausing the frontend and pausing the background component after a predetermined time period has passed following the pausing of the frontend to allow in-flight I/O requests that are fetched by the frontend to complete.

5. The method of claim 1 , wherein:

the first I/O service process includes a background component and an I/O provider, and

deactivating the first I/O service process includes: (i) pausing the background component and (ii) pausing the I/O provider after the background component is paused to allow in-flight instructions that are issued by the background component to complete.

6. The method of claim 1 , wherein:

pausing the first I/O service process includes pausing a frontend of the first I/O service process and pausing one or more I/O providers of the first I/O service process, and

pausing the frontend of the first I/O service process includes transmitting to the first I/O service process an instruction, which, when received by the first I/O service process, causes the first I/O service process to set a synchronization barrier that is arranged to prevent the frontend of the first I/O service process from retrieving I/O requests from a pool of I/O requests after.

7. The method of claim 1 , wherein:

pausing the first I/O service process includes pausing a frontend of the first I/O service process and pausing one or more I/O providers of the first I/O service process, and

pausing the one or more I/O providers of the first I/O service process includes transmitting to the first I/O service process an instruction, which, when received by the first I/O service process, causes the first I/O service process to set a synchronization barrier that is arranged to prevent the I/O providers from beginning execution of new I/O tasks.

8. An apparatus for use in a storage system, the storage system including a first storage server configured to execute a first I/O service process and one or more second storage servers, the apparatus comprising:

a memory; and

at least one processor operatively coupled to the memory, the at least one processor being configured to perform the operations of:

detecting a first event for triggering a context switch;

causing the second storage servers to stop transmitting internal I/O requests to the first I/O service process;

deactivating the first I/O service process by pausing one or more components of the first I/O service process; and

after the first I/O service process is deactivated, executing a first context switch between the first I/O service process and a second process.

9. The apparatus of claim 8 , wherein causing the second storage servers to stop transmitting internal I/O requests to the first I/O service process includes transmitting to each of the second storage servers an instruction to stop transmitting internal I/O requests to the first I/O service process.

10. The apparatus of claim 9 , wherein the instruction includes an identifier corresponding to the first I/O service process, the identifier being arranged to distinguish the first I/O service process from other first I/O service processes that are executed by the first storage server concurrently with the first I/O service process.

11. The apparatus of claim 8 , wherein:

the first I/O service process includes a frontend and a background component, and

deactivating the first I/O service process includes pausing the frontend and pausing the background component after a predetermined time period has passed following the pausing of the frontend to allow in-flight I/O requests that are fetched by the frontend to complete.

12. The apparatus of claim 8 , wherein:

the first I/O service process includes a background component and an I/O provider, and

deactivating the first I/O service process includes: (i) pausing the background component and (ii) pausing the I/O provider after the background component is paused to allow in-flight instructions that are issued by the background component to complete.

13. The apparatus of claim 8 , wherein:

pausing the first I/O service process includes pausing a frontend of the first I/O service process and pausing one or more I/O providers of the first I/O service process, and

pausing the frontend of the first I/O service process includes transmitting to the first I/O service process an instruction, which, when received by the first I/O service process, causes the first I/O service process to set a synchronization barrier that is arranged to prevent the frontend of the first I/O service process from retrieving I/O requests from a pool of I/O requests.

14. The apparatus of claim 8 , wherein:

pausing the first I/O service process includes pausing a frontend of the first I/O service process and pausing one or more I/O providers of the first I/O service process, and

pausing the one or more I/O providers of the first I/O service process includes transmitting to the first I/O service process an instruction, which, when received by the first I/O service, process causes the first I/O service process to set a synchronization barrier that is arranged to prevent the I/O providers from beginning execution of new I/O tasks.

15. A non-transitory computer-readable medium storing one or more processor-executable instructions, which when executed by at least one processor cause the at least one processor to execute the operations of:

detecting a first event for triggering a context switch in a first storage server, the first storage server being configured to execute a first I/O service process for servicing I/O requests in a distributed storage system;

causing each of a plurality of second storage servers to stop transmitting internal I/O requests to the first I/O service process;

deactivating the first I/O service process by pausing one or more components of the first I/O service process; and

after the first I/O service process is deactivated, executing a first context switch between the first I/O service process and a second process.

16. The non-transitory computer-readable medium of claim 15 , wherein causing the second storage servers to stop transmitting internal I/O requests to the first I/O service process includes transmitting to each of the second storage servers an instruction to stop transmitting internal I/O requests to the first I/O service process.

17. The non-transitory computer-readable medium of claim 16 , wherein the instruction includes an identifier corresponding to the first I/O service process, the identifier being arranged to distinguish the first I/O service process from other first I/O service processes that are executed by the first storage server concurrently with the first I/O service process.

18. The non-transitory computer-readable medium of claim 15 , wherein:

the first I/O service process includes a frontend and a background component, and

deactivating the first I/O service process includes pausing the frontend and pausing the background component after a predetermined time period has passed following the pausing of the frontend to allow in-flight I/O requests that are fetched by the frontend to complete.

19. The non-transitory computer-readable medium of claim 15 , wherein:

the first I/O service process includes a background component and an I/O provider, and

deactivating the first I/O service process includes: (i) pausing the background component and (ii) pausing the I/O provider after the background component is paused to allow in-flight instructions that are issued by the background component to complete.

20. The non-transitory computer-readable medium of claim 15 , wherein:

pausing the first I/O service process includes pausing a frontend of the first I/O service process and pausing one or more I/O providers of the first I/O service process, and

pausing the frontend of the first I/O service process includes transmitting to the first I/O service process an instruction, which, when received by the first I/O service process, causes the first I/O service process to set a synchronization barrier that is arranged to prevent the frontend of the first I/O service process from retrieving I/O requests from a pool of I/O requests.

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 (051302/0528) 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 IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
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 AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
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 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2019
From: KAMRAN, LIOR; ALKALAY, AMITAI; SCHNEIDER, ZVI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050455/0990 →
Continuity (2)
Continuation 16162471 · Oct 17, 2018
Related Publication 20200125403A1 · Apr 23, 2020