IP Library › Granted Patent US 9,208,116
Granted Patent B2
US 9,208,116 · App. 14/595,062 · Granted Dec 8, 2015

Maintaining I/O priority and I/O sorting

Inventors: Joseph Sokol, Jr. (San Jose, CA); Manoj Radhakrishnan (Fremont, CA); Matthew J. Byom (San Jose, CA); Robert Hoopes (Morgan Hill, CA); Christopher Sarcone (Saratoga, CA)
Assignee: Apple Inc.
G06F13/30G06F13/18G06F13/37G06F13/372
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 9,208,116
App. No.
14/595,062
Granted
Dec 8, 2015
Kind
B2
Abstract

Multiple variants of a data processing system, which maintains I/O priority from the time a process makes an I/O request until the hardware services that request, will be described. In one embodiment, a data processing system has one or more processors having one or more processor cores, which execute an operating system and one or more applications of the data processing system. The data processing system also can have one or more non-volatile memory device coupled to the one or more processors to store data of the data processing system, and one or more non-volatile memory controller coupled to the one or more processors. The one or more non-volatile memory controller enables a transfer of data to at least one non-volatile memory device, and the priority level assigned by the operating system is maintained throughout the logical data path of the data processing system.

Claims (30)

1. A non-transitory computer-readable medium with instructions stored therein, the instructions, when executed by a data processing system, cause the data processing system to perform a method of processing one or more input/output operations having a timestamp and a priority level, the method comprising:

adding an input/output operation to a queue based on the priority level of the input/output operation, wherein the queue has a weight assigned by the data processing system;

determining a deadline of the input/output operation by adding the timestamp of the input/output operation to the weight of the queue;

determining if the deadline of one or more input/output operations has expired by comparing the deadline of the one or more input/output operations to a reference time;

and processing at least one of the operations with an expired deadline, wherein the processing maintains the assigned priority until the operation is completed by the data processing system.

2. The computer-readable medium of claim 1 , further comprising:

receiving an input/output operation with a priority level assigned by the data processing system.

3. The computer-readable medium of claim 1 , wherein the reference time is determined by a system clock of the data processing system.

4. The computer-readable medium of claim 1 , wherein the reference time is determined by a reference clock external to the data processing system.

5. The computer readable medium of claim 1 , further comprising selecting an additional queue to process based on round-robin arbitration.

6. The medium of claim 1 , wherein an operating system throttles the transfer of data from a second application, to preserve the input/output rate of a first application, wherein the priority of the first application is superior to the priority of the second application.

7. The medium of claim 6 , wherein data transfers originating from the operating system have a supervisor priority, wherein the supervisor priority is superior to all priorities assigned to the one or more applications.

8. The medium of claim 1 , wherein the at least one non-volatile memory device of the data processing system is abstracted as a block storage device, and wherein the block storage device is abstracted to an operating system by a file system, wherein the file system and the block storage device maintain the priority level assigned by the operating system.

9. The medium of claim 8 , wherein the block storage device prioritizes transfer of data via a system of weighted queues, wherein the weighted queues are arbitrated in a round-robin fashion, and wherein members of the weighted queues have scheduling factors including the timestamp, a weight, and a deadline.

10. The medium of claim 1 , wherein the priority of each input/output operation is derived from the priority of the one of more applications associated with the input/output operation.

11. A machine implemented method of processing one or more input/output operations on a data processing system, the one or more input/output operations having a timestamp and a priority level, the method comprising:

adding an input/output operation to a queue based on the priority level of the input/output operation, wherein the queue has a weight assigned by the data processing system;

determining a deadline of the input/output operation by adding the timestamp of the input/output operation to the weight of the queue;

determining if the deadline of one or more input/output operations has expired by comparing the deadline of the one or more input/output operations to a reference time;

and processing at least one of the operations with an expired deadline, wherein the processing maintains the assigned priority until the operation is completed by the data processing system.

12. The method of claim 11 , further comprising:

receiving an input/output operation with a priority level assigned by the data processing system.

13. The method of claim 11 , wherein the reference time is determined by a system clock of the data processing system.

14. The method of claim 11 , wherein the reference time is determined by a reference clock external to the data processing system.

15. The method of claim 11 , further comprising selecting an additional queue to process based on round-robin arbitration.

16. The method of claim 11 , wherein an operating system throttles the transfer of data from a second application, to preserve the input/output rate of a first application, wherein the priority of the first application is superior to the priority of the second application.

17. The method of claim 16 , wherein data transfers originating from the operating system have a supervisor priority, wherein the supervisor priority is superior to all priorities assigned to the one or more applications.

18. The method of claim 11 , wherein the at least one non-volatile memory device of the data processing system is abstracted as a block storage device, and wherein the block storage device is abstracted to the operating system of the data processing system by a file system, wherein the file system and the block storage device maintain the priority level assigned by the operating system.

19. The method of claim 18 , wherein the block storage device prioritizes transfer of data via a system of weighted queues, wherein the weighted queues are arbitrated in a round-robin fashion, and wherein members of the weighted queues have scheduling factors including the timestamp, a weight, and a deadline.

20. The method of claim 11 , wherein the priority of each input/output operation is derived from the priority of the one of more applications associated with the input/output operation.

Continuity (2)
Division 13736846 · Jan 8, 2013
Related Publication 20150127863A1 · May 7, 2015