IP Library Granted Patent US 11,500,799
Granted Patent B2
US 11,500,799 · App. 17/029,646 · Granted Nov 15, 2022

Managing access to a CPU on behalf of a block application and a non-block application

Inventors: Lior Kamran (Richon LeZion, IL); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F13/20G06F9/4881G06F16/16G06F2213/40
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,500,799
App. No.
17/029,646
Granted
Nov 15, 2022
Kind
B2
Abstract

A technique manages input/output(I/O)-critical tasks and background tasks within a computer device. The technique involves identifying tasks on the computer device as I/O-critical tasks and background tasks, accessing a ready task list that indicates any ready I/O-critical tasks and any ready background tasks, and based on the accessed ready task list, performing the tasks on the computer device. Such a technique enables the computer device to make better decisions that reduce I/O latencies while still efficiently utilizing central processing unit (CPU) cycles.

Claims (104)

1. A computer-implemented method, executed on a computer device, comprising:

identifying tasks on the computer device as input/output (I/O)-critical tasks and background tasks;

accessing a ready task list that indicates any ready I/O-critical tasks and any ready background tasks;

based on the accessed ready task list, performing the tasks on the computer device;

initiating a block application and a non-block application on a central processing unit (CPU) of the computerized device, the block application being constructed and arranged to manage access to the CPU on behalf of the block application and the non-block application; and

releasing, by the block application, the CPU to the non-block application in accordance with a set of CPU release criteria to enable the block application and the non-block application to share the CPU as the tasks are performed on the computer device.

2. A computer-implemented method as in claim 1 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein identifying the tasks on the computer device includes:

distinguishing threads of the file application into a set of I/O-critical file threads and a set of background file threads.

3. A computer-implemented method as in claim 1 wherein accessing the ready task list includes:

encountering a decision point on the computer device, and

in response to encountering the decision point and based on the ready task list, selecting a next thread to run on the computer device.

4. A computer-implemented method as in claim 1 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein performing the tasks on the computer device includes:

sharing the CPU between the block application and the non-block application in accordance with a CPU release duration parameter that defines an amount of CPU time available for the block application and a CPU release duration parameter that identifies an amount of CPU time available for the file application.

5. A computer-implemented method as in claim 1 wherein the non-block application is a file application that performs file-based operations on data;

wherein the file application includes a set of I/O-critical file threads and a set of background file threads; and

wherein identifying the tasks on the computer device includes:

providing a first character string in a thread name of each I/O-critical file thread of the set of I/O-critical file threads and a second character string in a thread name of each background file thread of the set of background file threads, the first character string being different from the second character string.

6. A computer-implemented method as in claim 1 wherein the block application performs block-based operations on data;

wherein the block application includes a set of I/O-critical block threads and a set of background block threads; and

wherein identifying the tasks on the computer device includes:

providing one of at least three different priority levels to each I/O-critical block thread of the set of I/O-critical block threads.

7. A computer-implemented method as in claim 2 wherein identifying the tasks on the computer device further includes:

distinguishing threads of the block application into a set of I/O-critical block threads and a set of background block threads.

8. A computer-implemented method as in claim 3 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data;

wherein encountering the decision point includes:

expiring a CPU release interval that defines an amount of CPU time available for consumption by the block application; and

wherein selecting the next thread to run on the computer device includes:

determining that there are no I/O-critical file threads of the file application that are ready and that there is at least one I/O-critical block thread of the block application that is ready, and

choosing a ready I/O-critical block thread of the block application as the next thread to run on the computer device to override release of the CPU to the file application.

9. A computer-implemented method as in claim 3 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data;

wherein encountering the decision point includes:

expiring a CPU release interval that defines an amount of CPU time available for consumption by the block application; and

wherein selecting the next thread to run on the computer device includes:

determining that (i) there are no I/O-critical file threads of the file application that are ready, (ii) there is at least one background file thread of the file application that is ready, and (iii) that there is at least one I/O-critical block thread of the block application that is ready, and

determining that a starvation avoidance threshold has been reached, and

in response to determining that the starvation avoidance threshold has been reached, choosing a ready background filed thread of the file application as the next thread to run on the computer device to prevent starvation of the ready background filed thread.

10. A computer-implemented method as in claim 3 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein selecting the next thread to run on the computer device includes:

upon the block application being ready to enter a CPU release interval that defines an amount of CPU time available for consumption by the block application, determining that there is at least one I/O-critical file thread of the file application that is ready and that there are no I/O-critical block threads of the block application that are ready, and

choosing a ready I/O-critical file thread of the file application as the next thread to run on the computer device to override consumption of the CPU release interval by the block application.

11. A computer-implemented method as in claim 3 wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein selecting the next thread to run on the computer device includes:

upon the block application being ready to enter a CPU release interval that defines an amount of CPU time available for consumption by the block application, determining that (i) there are no I/O-critical block threads of the block application that are ready, (ii) there is at least one background block thread of the block application that is ready, and (iii) that there is there is at least one I/O-critical file thread of the file application that is ready,

determining that a starvation avoidance threshold has been reached, and

in response to determining that the starvation avoidance threshold has been reached, choosing a ready background block thread of the block application as the next thread to run on the computer device to prevent starvation of the ready background block thread.

12. A computer-implemented method as in claim 4 wherein accessing the ready task list includes:

determining that there is at least one I/O-critical block thread of the block application that is ready and that there is at least one I/O-critical file thread of the file application that is ready; and

wherein the computer-implemented method further comprises:

shortening each of the CPU release duration parameter and the CPU release duration parameter to reduce I/O latency.

13. A computer-implemented method as in claim 4 wherein accessing the ready task list includes:

determining that there are no I/O-critical block threads of the block application that are ready and that there are no I/O-critical file threads of the file application that are ready; and

wherein the computer-implemented method further comprises:

lengthening each of the CPU release duration parameter and the CPU release duration parameter to reduce context-switching frequency.

14. A computer device, comprising:

memory; and

control circuitry coupled to the memory, the memory storing instructions which, when carried out by the control circuitry, cause the control circuitry to:

identify tasks on the computer device as input/output (I/O)-critical tasks and background tasks,

access a ready task list that indicates any ready I/O-critical tasks and any ready background tasks, and

based on the accessed ready task list, perform the tasks on the computer device;

initiate a block application and a non-block application on a central processing unit (CPU) of the computerized device, the block application being constructed and arranged to manage access to the CPU on behalf of the block application and the non-block application; and

release, by the block application, the CPU to the non-block application in accordance with a set of CPU release criteria to enable the block application and the non-block application to share the CPU as the tasks are performed on the computer device.

15. A computer device as in claim 14

wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein identifying the tasks on the computer device includes:

distinguishing threads of the file application into a set of I/O-critical file threads and a set of background file threads, and

distinguishing threads of the block application into a set of I/O-critical block threads and a set of background block threads.

16. A computer device as in claim 15 wherein the control circuitry, when accessing the ready task list, is constructed and arranged to:

encounter a decision point on the computer device, and

in response to encountering the decision point and based on the ready task list, select a next thread to run on the computer device.

17. A computer program product having a non-transitory computer readable medium which stores a set of instructions to manage tasks, the set of instructions, when carried out by a computer device, causing the computer device to perform a method of:

identifying tasks on the computer device as input/output (I/O)-critical tasks and background tasks;

accessing a ready task list that indicates any ready I/O-critical tasks and any ready background tasks; and

based on the accessed ready task list, performing the tasks on the computer device;

initiating a block application and a non-block application on a central processing unit (CPU) of the computerized device, the block application being constructed and arranged to manage access to the CPU on behalf of the block application and the non-block application; and

releasing, by the block application, the CPU to the non-block application in accordance with a set of CPU release criteria to enable the block application and the non-block application to share the CPU as the tasks are performed on the computer device.

18. A computer-implemented method, executed on a computer device, comprising:

identifying tasks on the computer device as input/output (I/O)-critical tasks and background tasks;

accessing a ready task list that indicates any ready I/O-critical tasks and any ready background tasks;

based on the accessed ready task list, performing the tasks on the computer device; and

initiating a block application and a non-block application on a central processing unit (CPU) of the computerized device, the block application being constructed and arranged to manage access to the CPU on behalf of the block application and the non-block application;

wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein identifying the tasks on the computer device includes:

distinguishing threads of the file application into a set of I/O-critical file threads and a set of background file threads.

19. A computer-implemented method as in claim 18 wherein identifying the tasks on the computer device further includes:

distinguishing threads of the block application into a set of I/O-critical block threads and a set of background block threads.

20. A computer-implemented method, executed on a computer device, comprising:

identifying tasks on the computer device as input/output (I/O)-critical tasks and background tasks;

accessing a ready task list that indicates any ready I/O-critical tasks and any ready background tasks;

based on the accessed ready task list, performing the tasks on the computer device; and

initiating a block application and a non-block application on a central processing unit (CPU) of the computerized device, the block application being constructed and arranged to manage access to the CPU on behalf of the block application and the non-block application;

wherein the block application performs block-based operations on data;

wherein the non-block application is a file application that performs file-based operations on data; and

wherein performing the tasks on the computer device includes:

sharing the CPU between the block application and the non-block application in accordance with a CPU release duration parameter that defines an amount of CPU time available for the block application and a CPU release duration parameter that identifies an amount of CPU time available for the file application.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0523) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0664 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0434) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 060332/0740 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0609) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0570 →
RELEASE OF SECURITY INTEREST AT REEL 054591 FRAME 0471 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0463 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 054475/0609 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0434 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 054475/0523 →
SECURITY AGREEMENT Recorded Nov 13, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 054591/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2020
From: KAMRAN, LIOR; ALKALAY, AMITAI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054138/0034 →