IP Library Granted Patent US 11,232,010
Granted Patent B2
US 11,232,010 · App. 16/747,138 · Granted Jan 25, 2022

Performance monitoring for storage system with core thread comprising internal and external schedulers

Inventors: Lior Kamran (Rishon LeZion, IL); Vladimir Kleiner (Tel Aviv, IL)
Assignee: EMC IP Holding Company LLC
G06F11/3409G06F9/3836G06F9/4881G06F11/3017
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,232,010
App. No.
16/747,138
Granted
Jan 25, 2022
Kind
B2
Abstract

A processing device monitors performance of a first thread of a first application executing on one of a plurality of processing cores of a storage system. The first thread comprises an internal scheduler controlling switching between a plurality of sub-threads of the first thread, and an external scheduler controlling release of the processing core by the first thread for use by at least a second thread of a second application different than the first application. In conjunction with monitoring the performance of the first thread in executing the first application, the processing device maintains a cumulative suspend time of the first thread over multiple suspensions of the first thread, with one or more of the multiple suspensions allowing at least the second thread of the second application to execute on the processing core, and generates performance measurements for sub-threads of the first thread using the cumulative suspend time.

Claims (64)

1. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

said at least processing device being configured:

to monitor performance of a first thread of a first application executing on one of a plurality of processing cores of a storage system;

the first thread comprising an internal scheduler configured to control switching between a plurality of sub-threads of the first thread, and an external scheduler configured to control release of the processing core by the first thread for use by at least a second thread of a second application different than the first application;

in conjunction with monitoring the performance of the first thread in executing the first application, to maintain a cumulative suspend time of the first thread over multiple suspensions of the first thread, one or more of the multiple suspensions allowing at least the second thread of the second application to execute on the processing core; and

to generate performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread.

2. The apparatus of claim 1 wherein said at least one processing device comprises at least a subset of the plurality of processing cores of the storage system.

3. The apparatus of claim 1 wherein the first application comprises a block-storage application of the storage system.

4. The apparatus of claim 1 wherein the second application comprises a file-storage application of the storage system.

5. The apparatus of claim 1 wherein the first thread comprises a truck thread that when executing on the processing core is configured to utilize substantially all available processing resources of the processing core.

6. The apparatus of claim 1 wherein the external scheduler of the first thread comprises:

a processing core release component configured to determine, in conjunction with each switch between sub-threads of the first thread, whether or not the first thread will suspend itself so as to release the processing core for use by at least the second thread of the second application; and

a waker component configured to determine, in conjunction with each switch between sub-threads of the first thread, whether or not there is at least one additional thread of the first application to be returned from suspension prior to release of the processing core by the first thread;

the processing core release component further operating in conjunction with the waker component to return the first thread from suspension.

7. The apparatus of claim 1 wherein each of the sub-threads of the first thread is in one of multiple designated states at a particular point in time, including a running state, a ready state and a suspended state.

8. The apparatus of claim 7 wherein the sub-threads comprise respective non-preemptive threads and the first thread is configured such that no sub-thread in the running state is suspended to allow release of the processing core by the first thread for use by the second thread, the multiple suspensions of the first thread each occurring in conjunction with a switch between sub-threads of the first thread.

9. The apparatus of claim 7 wherein generating performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread comprises:

generating a ready time measurement for a particular one of the sub-threads; and

adjusting the ready time measurement based at least in part on the cumulative suspend time of the first thread;

wherein the adjusted ready time measurement is indicative of an amount of time the sub-thread spent in the ready state while the first thread was not suspended.

10. The apparatus of claim 7 wherein generating performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread comprises:

generating a suspend time measurement for a particular one of the sub-threads; and

adjusting the suspend time measurement based at least in part on the cumulative suspend time of the first thread;

wherein the adjusted suspend time measurement is indicative of an amount of time the sub-thread spent in the suspended state while the first thread was not suspended.

11. The apparatus of claim 1 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread:

taking a first timestamp to indicate start of the suspension;

taking a second timestamp to indicate resumption of the first thread from the suspension; and

adding a time interval corresponding to a difference between the first and second timestamps to the cumulative suspend time.

12. The apparatus of claim 1 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread, storing a current value of the cumulative suspend time in association with a current value of a suspension number counter that is incremented with each of the multiple suspensions of the first thread.

13. The apparatus of claim 12 wherein generating performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread comprises:

taking a first timestamp to indicate start of a performance interval;

storing a starting value of the suspension number counter in conjunction with taking the first timestamp;

taking a second timestamp to indicate end of the performance interval;

storing an ending value of the suspension number counter in conjunction with taking the second timestamp;

utilizing the starting and ending values of the suspension number counter to determine respective corresponding values of the cumulative suspend time of the first thread; and

adjusting a difference between the first and second timestamps based at least in part on a difference between the corresponding values of the cumulative suspend time of the first thread.

14. A method comprising:

monitoring performance of a first thread of a first application executing on one of a plurality of processing cores of a storage system;

the first thread comprising an internal scheduler configured to control switching between a plurality of sub-threads of the first thread, and an external scheduler configured to control release of the processing core by the first thread for use by at least a second thread of a second application different than the first application;

in conjunction with monitoring the performance of the first thread in executing the first application, maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread, one or more of the multiple suspensions allowing at least the second thread of the second application to execute on the processing core; and

generating performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread.

15. The method of claim 14 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread:

taking a first timestamp to indicate start of the suspension;

taking a second timestamp to indicate resumption of the first thread from the suspension; and

adding a time interval corresponding to a difference between the first and second timestamps to the cumulative suspend time.

16. The method of claim 14 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread, storing a current value of the cumulative suspend time in association with a current value of a suspension number counter that is incremented with each of the multiple suspensions of the first thread.

17. The method of claim 16 wherein generating performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread comprises:

taking a first timestamp to indicate start of a performance interval;

storing a starting value of the suspension number counter in conjunction with taking the first timestamp;

taking a second timestamp to indicate end of the performance interval;

storing an ending value of the suspension number counter in conjunction with taking the second timestamp;

utilizing the starting and ending values of the suspension number counter to determine respective corresponding values of the cumulative suspend time of the first thread; and

adjusting a difference between the first and second timestamps based at least in part on a difference between the corresponding values of the cumulative suspend time of the first thread.

18. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device comprising a processor coupled to a memory, causes said at least one processing device:

to monitor performance of a first thread of a first application executing on one of a plurality of processing cores of a storage system;

the first thread comprising an internal scheduler configured to control switching between a plurality of sub-threads of the first thread, and an external scheduler configured to control release of the processing core by the first thread for use by at least a second thread of a second application different than the first application;

in conjunction with monitoring the performance of the first thread in executing the first application, to maintain a cumulative suspend time of the first thread over multiple suspensions of the first thread, one or more of the multiple suspensions allowing at least the second thread of the second application to execute on the processing core; and

to generate performance measurements for respective ones of the sub-threads of the first thread based at least in part on the cumulative suspend time of the first thread.

19. The computer program product of claim 18 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread:

taking a first timestamp to indicate start of the suspension;

taking a second timestamp to indicate resumption of the first thread from the suspension; and

adding a time interval corresponding to a difference between the first and second timestamps to the cumulative suspend time.

20. The computer program product of claim 18 wherein maintaining a cumulative suspend time of the first thread over multiple suspensions of the first thread comprises, for each of the multiple suspensions of the first thread, storing a current value of the cumulative suspend time in association with a current value of a suspension number counter that is incremented with each of the multiple suspensions of the first thread.

Assignments (9)
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 (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 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 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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2020
From: KAMRAN, LIOR; KLEINER, VLADIMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051555/0781 →