IP Library Granted Patent US 10,474,496
Granted Patent B1
US 10,474,496 · App. 16/162,471 · Granted Nov 12, 2019

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

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,474,496
App. No.
16/162,471
Granted
Nov 12, 2019
Kind
B1
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 (46)

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;

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

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, the first I/O service process and the second process being executed on a same processor core of the first storage server, and the first context switch causing the processor core to stop executing the first I/O service process and begin executing the second process.

2. The method of claim 1 , wherein 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 any on-going retrieval of I/O requests is completed.

3. The method of claim 1 , wherein 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 after completing any in-flight tasks that are being executed by the I/O providers.

4. The method of claim 1 , wherein disabling the first I/O service process includes disabling one or more background components of the first I/O service process.

5. The method of claim 1 , further comprising:

detecting a second event for triggering a context switch;

transmitting to each of the second storage servers an instruction to resume 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;

activating the first I/O service process by resuming a frontend of the first I/O service process, and resuming one or more I/O providers of the first I/O service process; and

after the first I/O service process is activated, executing a second context switch between the second process and the first I/O service process, the second context switch causing the processor core to stop executing the second process and begin executing the first I/O service process.

6. The method of claim 1 , wherein 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 release 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 any on-going retrieval of I/O requests is completed.

7. The method of claim 1 , wherein 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 release a synchronization barrier that is arranged to prevent the I/O providers from beginning execution of new I/O tasks after completing any in-flight tasks that are being executed by the I/O providers.

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:

detect a first event for triggering a context switch;

transmit 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;

deactivate 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

after the first I/O service process is deactivated, execute a first context switch between the first I/O service process and a second process, the first I/O service process and the second process being executed on a same processor core of the first storage server, and the first context switch causing the processor core to stop executing the first I/O service process and begin executing the second process.

9. The apparatus of claim 8 , wherein 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 any on-going retrieval of I/O requests is completed.

10. The apparatus of claim 8 , wherein 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 after completing any in-flight tasks that are being executed by the I/O providers.

11. The apparatus of claim 8 , wherein disabling the first I/O service process includes disabling one or more background components of the first I/O service process.

12. The apparatus of claim 8 , wherein the one or more processors are further configured to:

detect a second event for triggering a context switch;

transmit to each of the second storage servers an instruction to resume 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;

activate the first I/O service process by resuming a frontend of the first I/O service process, and resuming one or more I/O providers of the first I/O service process; and

after the first I/O service process is activated, execute a second context switch between the second process and the first I/O service process, the second context switch causing the processor core to stop executing the second process and begin executing the first I/O service process.

13. The apparatus of claim 8 , wherein 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 release 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 any on-going retrieval of I/O requests is completed.

14. The apparatus of claim 8 , wherein 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 release a synchronization barrier that is arranged to prevent the I/O providers from beginning execution of new I/O tasks after completing any in-flight tasks that are being executed by the I/O providers.

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 server being configured to execute a first I/O service process for servicing I/O requests in a distributed storage system;

transmitting to each of a plurality of second storage servers that are part of the distributed storage system 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

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, the first I/O service process and the second process being executed on a same processor core of the first storage server, and the first context switch causing the processor core to stop executing the first I/O service process and begin executing the second process.

16. The non-transitory computer-readable medium of claim 15 , wherein 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 any on-going retrieval of I/O requests is completed.

17. The non-transitory computer-readable medium of claim 15 , wherein 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 after completing any in-flight tasks that are being executed by the I/O providers.

18. The non-transitory computer-readable medium of claim 15 , wherein the one or more processor-executable instructions are further configured to cause the at least one processor to perform the operations of:

detecting a second event for triggering a context switch;

transmitting to each of the second storage servers an instruction to resume 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;

activating the first I/O service process by resuming a frontend of the first I/O service process, and resuming one or more I/O providers of the first I/O service process; and

after the first I/O service process is activated, executing a second context switch between the second process and the first I/O service process, the second context switch causing the processor core to stop executing the second process and begin executing the first I/O service process.

19. The non-transitory computer-readable medium of claim 15 , wherein 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 release 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 any on-going retrieval of I/O requests is completed.

20. The non-transitory computer-readable medium of claim 15 , wherein 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 release a synchronization barrier that is arranged to prevent the I/O providers from beginning execution of new I/O tasks after completing any in-flight tasks that are being executed by the I/O providers.

Assignments (7)
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 (052216/0758) 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
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2018
From: KAMRAN, LIOR; ALKALAY, AMITAI; SCHNEIDER, ZVI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 047197/0237 →