Yielding input/output scheduler to increase overall system throughput
AssigneeRed Hat, Inc.
InventorJeffrey E. Moyer
Life of this patent
Estimating the term…
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.
Claims15
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.
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.
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.
Dependencies are inferred from the claim text.