IP Library › Granted Patent US 8,949,835
Granted Patent B2
US 8,949,835 · App. 12/956,898 · Granted Feb 3, 2015

Yielding input/output scheduler to increase overall system throughput

Inventor: Jeffrey E. Moyer (Carlisle, MA)
Assignee: Red Hat, Inc.
G06F9/4881G06F3/0613G06F3/0659G06F3/0676
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 8,949,835
App. No.
12/956,898
Granted
Feb 3, 2015
Kind
B2
Abstract

A mechanism for yielding input/output scheduler to increase overall system throughput is described. A method of embodiments of the invention includes initiating a first process issuing a first input/output (I/O) operation. The first process is initiated by a first I/O scheduling entity running on a computer system. The method further includes yielding, in response to a yield call made by the first I/O scheduling entity, an I/O scheduler to a second I/O scheduling entity to initiate a second process issuing a second I/O operation to complete a transaction including the first and second processes, and committing the transaction to a storage device coupled to the computer system.

Claims (36)

1. A method comprising:

initiating, by a first input/output (I/O) scheduling entity executed by a processing device of a computer system, a first process issuing a first I/O operation to an I/O scheduler of the computer system;

issuing, by the first I/O scheduling entity, a commitment function to the I/O scheduler, the commitment function to commit the first I/O operation of the first process to a storage device of the computer system, wherein the first process is dependent on completion of a second process comprising a second I/O operation by a second I/O scheduling entity before the commitment function can commit a transaction comprising the first I/O operation to the storage device;

issuing, by the first I/O scheduling entity as part of the commitment function, a yield call to the I/O scheduler, wherein a yield component of the I/O scheduler triggers the issuing of the yield call by the first I/O scheduling entity as part of the commitment function in view of the dependency of the first process on the second process;

relinquishing, by the first I/O scheduling entity in response to the issuing of the yield call, resources of the I/O scheduler that are used by the first I/O scheduling entity to perform the first I/O operation, the resources of the I/O scheduler relinquished in order to yield the I/O scheduler to the second I/O scheduling entity, wherein the second I/O scheduling entity to initiate, in response to the yielding of the I/O scheduler, the second process that issues the second I/O operation to the I/O scheduler using the relinquished resources of the I/O scheduler from the first I/O scheduling entity in order to complete the transaction; and

subsequent to the completion of the transaction, committing, by the I/O scheduler, the transaction to the storage device;

wherein the resources comprise processor time or bandwidth for the I/O scheduler assigned to the first I/O scheduling entity to perform the first I/O operation.

2. The method of claim 1 , wherein the second I/O scheduling entity serves as a dependent I/O scheduling entity to the first I/O scheduling entity, wherein the second process serves as a dependent process to the first process.

3. The method of claim 1 , wherein the first I/O scheduling entity comprises a software application running on the computer system.

4. The method of claim 1 , wherein the second I/O scheduling entity is part of an operating system running on the computer system, the second I/O scheduling entity comprising a journal thread.

5. The method of claim 4 , wherein the operating system comprises the I/O scheduler.

6. A system comprising:

a storage device;

a memory communicably coupled to the storage device, the memory to store instructions for a yielding input/output (I/O) scheduler; and

a processing device communicably coupled to the storage device and the memory, the processing device to:

initiate, by a first I/O scheduling entity executed by the processing device, a first process issuing a first I/O operation to the yielding I/O scheduler;

issue, by the first I/O scheduling entity, a commitment function to the I/O scheduler, the commitment function to commit the first I/O operation of the first process to the storage device, wherein the first process is dependent on completion of a second process comprising a second I/O operation by a second I/O scheduling entity before the commitment function can commit a transaction comprising the first I/O operation to the storage device;

issue, by the first I/O scheduling entity as part of the commitment function, a yield call to the I/O scheduler, wherein a yield component of the I/O scheduler triggers the issuing of the yield call by the first I/O scheduling entity as part of the commitment function in view of the dependency of the first process on the second process; and

relinquish, by the first I/O scheduling entity in response to the issuing of the yield call, resources of the I/O scheduler that are used by the first I/O scheduling entity to perform the first I/O operation, the resources of the I/O scheduler relinquished in order to yield the I/O scheduler to the second I/O scheduling entity, wherein the second I/O scheduling entity to initiate, in response to the yielding of the I/O scheduler, the second process that issues the second I/O operation to the I/O scheduler using the relinquished resources of the I/O scheduler from the first I/O scheduling entity in order to complete the transaction;

wherein the yielding I/O scheduler to, subsequent to the completion of the transaction, commit the transaction to the storage device;

wherein the resources comprise processor time or bandwidth for the I/O scheduler assigned to the first I/O scheduling entity to perform the first I/O operation.

7. The system of claim 6 , wherein the second I/O scheduling entity serves as a dependent I/O scheduling entity to the first I/O scheduling entity, wherein the second process serves as a dependent process to the first process.

8. The system of claim 6 , wherein the first I/O scheduling entity comprises a software application running on the computer system.

9. The system of claim 6 , wherein the second I/O scheduling entity is part of an operating system running on the computer system, the second I/O scheduling entity comprising a journal thread.

10. The system of claim 9 , wherein the operating system comprises the I/O scheduler.

11. A non-transitory machine-readable medium including instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

initiating, by a first input/output (I/O) scheduling entity executed by the processing device of a computer system, a first process issuing a first I/O operation to an I/O scheduler of the computer system;

issuing, by the first I/O scheduling entity, a commitment function to the I/O scheduler, the commitment function to commit the first I/O operation of the first process to a storage device of the computer system, wherein the first process is dependent on completion of a second process comprising a second I/O operation by a second I/O scheduling entity before the commitment function can commit a transaction comprising the first I/O operation to the storage device;

issuing, by the first I/O scheduling entity as part of the commitment function, a yield call to the I/O scheduler, wherein a yield component of the I/O scheduler triggers the issuing of the yield call by the first I/O scheduling entity as part of the commitment function in view of the dependency of the first process on the second process;

relinquishing, by the first I/O scheduling entity in response to the issuing of the yield call, resources of the I/O scheduler that are used by the first I/O scheduling entity to perform the first I/O operation, the resources of the I/O scheduler relinquished in order to yield the I/O scheduler to the second I/O scheduling entity, wherein the second I/O scheduling entity to initiate, in response to the yielding of the I/O scheduler, the second process that issues the second I/O operation to the I/O scheduler using the relinquished resources of the I/O scheduler from the first I/O scheduling entity in order to complete the transaction; and

subsequent to the completion of the transaction, committing, by the I/O scheduler, the transaction to the storage device;

wherein the resources comprise processor time or bandwidth for the I/O scheduler assigned to the first I/O scheduling entity to perform the first I/O operation.

12. The non-transitory machine-readable medium of claim 11 , wherein the second I/O scheduling entity serves as a dependent I/O scheduling entity to the first I/O scheduling entity, wherein the second process serves as a dependent process to the first process.

13. The non-transitory machine-readable medium of claim 11 , wherein the first I/O scheduling entity comprises a software application running on the computer system.

14. The non-transitory machine-readable medium of claim 11 , wherein the second I/O scheduling entity is part of an operating system running on the computer system, the second I/O scheduling entity comprising a journal thread.

15. The non-transitory machine-readable medium of claim 14 , wherein the operating system comprises the I/O scheduler.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2010
From: MOYER, JEFFREY E.
To: RED HAT, INC.
Reel/Frame 025403/0158 →
Continuity (1)
Related Publication 20120137299A1 · May 31, 2012