Storage device access mediation
First Claim
1. A computing system for managing outstanding I/O operations for a plurality of entities to a hardware storage device, the system comprising:
- a de-randomizer, operating on one or more processors of the computing system, wherein the de-randomizer comprises a plurality of slots for a hardware storage device, each slot comprising a queued list for listing I/O operations to be dispatched to the hardware storage device, wherein the slots are organized based on the hardware storage device size and offsets into the hardware storage device such that operations adjacent to each other in a queued list in the same slot are treated as sequential I/O operations to the hardware storage device to determine I/O cost, and non-adjacent operations within the same slot are treated as sparse I/O operations to the hardware storage device to determine I/O cost, and I/O operations from different queued lists in different slots are treated as random I/O operations to the hardware storage device to determine operation cost;
a plurality of entity queues coupled to the de-randomizer, the entity queues being configured to queue I/O operations for the plurality of entities to the hardware storage device;
a budget data structure coupled to the de-randomizer, wherein the budget data structure is configured to track budgets credits for the plurality of entities to determine which of the plurality of entities have sufficient budget to be allowed to have I/O operations dispatched to the hardware storage device;
wherein, based on either a most recent or current I/O operation dispatched to a hardware storage device, the computing system is configured to use the de-randomizer and budget data structure to identify sequential and sparse operations for a first entity of the plurality of entities to dispatch to the hardware storage device when the first entity has sufficient budget to have the I/O operation performed on its behalf, wherein when selecting the next operation for a first entity, the relative cost of the next operation is determined, including a comparison to other I/O operations and a cost for seek time, and the de-randomizer prioritizes selecting a sequential I/O operation in a given slot over a sparse I/O operation in the given slot;
wherein, based on determining that (i) the first entity has sufficient budget to have an I/O operation performed on its behalf, and that (ii) there are no remaining queued sequential operations in the given slot, the computer system is configured to use the de-randomizer to select a next sparse operation and to dispatch the next sparse operation to the hardware storage device; and
wherein, based on determining that the first entity lacks sufficient budget to have an additional I/O operation performed on its behalf, the computing system is configured to use the de-randomizer to identify an I/O operation for a second entity of the plurality of entities to dispatch to the hardware storage device.
2 Assignments
0 Petitions
Accused Products
Abstract
A system is configured to use a de-randomizer and budget data structure to economize I/O operations for a shared storage device while still allowing access to the device to a number of different entities. Embodiments can identify a comparatively low cost next operation as compared to other I/O operations, including a cost for seek time, for a first entity to dispatch to the storage device when the first entity has sufficient budget to have the I/O operation performed on its behalf and to identify an I/O operation for a second entity to dispatch to the storage device when there is insufficient budget for the first entity.
10 Citations
20 Claims
-
1. A computing system for managing outstanding I/O operations for a plurality of entities to a hardware storage device, the system comprising:
-
a de-randomizer, operating on one or more processors of the computing system, wherein the de-randomizer comprises a plurality of slots for a hardware storage device, each slot comprising a queued list for listing I/O operations to be dispatched to the hardware storage device, wherein the slots are organized based on the hardware storage device size and offsets into the hardware storage device such that operations adjacent to each other in a queued list in the same slot are treated as sequential I/O operations to the hardware storage device to determine I/O cost, and non-adjacent operations within the same slot are treated as sparse I/O operations to the hardware storage device to determine I/O cost, and I/O operations from different queued lists in different slots are treated as random I/O operations to the hardware storage device to determine operation cost; a plurality of entity queues coupled to the de-randomizer, the entity queues being configured to queue I/O operations for the plurality of entities to the hardware storage device; a budget data structure coupled to the de-randomizer, wherein the budget data structure is configured to track budgets credits for the plurality of entities to determine which of the plurality of entities have sufficient budget to be allowed to have I/O operations dispatched to the hardware storage device; wherein, based on either a most recent or current I/O operation dispatched to a hardware storage device, the computing system is configured to use the de-randomizer and budget data structure to identify sequential and sparse operations for a first entity of the plurality of entities to dispatch to the hardware storage device when the first entity has sufficient budget to have the I/O operation performed on its behalf, wherein when selecting the next operation for a first entity, the relative cost of the next operation is determined, including a comparison to other I/O operations and a cost for seek time, and the de-randomizer prioritizes selecting a sequential I/O operation in a given slot over a sparse I/O operation in the given slot; wherein, based on determining that (i) the first entity has sufficient budget to have an I/O operation performed on its behalf, and that (ii) there are no remaining queued sequential operations in the given slot, the computer system is configured to use the de-randomizer to select a next sparse operation and to dispatch the next sparse operation to the hardware storage device; and wherein, based on determining that the first entity lacks sufficient budget to have an additional I/O operation performed on its behalf, the computing system is configured to use the de-randomizer to identify an I/O operation for a second entity of the plurality of entities to dispatch to the hardware storage device. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. In a computing system comprising one or more processors and a plurality of entities, a method of managing outstanding I/O operations to a hardware storage device, the method comprising:
-
operating a de-randomizer that comprises a plurality of slots for a hardware storage device, each slot comprising a queued list for listing I/O operations to be dispatched to the hardware storage device, wherein the slots are organized based on the hardware storage device size and offsets into the hardware storage device such that operations adjacent to each other in a queued list in the same slot are treated as sequential I/O operations to the hardware storage device to determine I/O cost, and non-adjacent operations within the same slot are treated as sparse I/O operations to the hardware storage device to determine I/O cost, and I/O operations from different queued lists in different slots are treated as random I/O operations to the hardware storage device to determine operation cost; queueing, at a plurality of entity queues coupled to the de-randomizer, I/O operations for the plurality of entities to the hardware storage device; tracking, at a budget data structure coupled to the de-randomizer, budgets credits for the plurality of entities to determine which of the plurality of entities have sufficient budget to be allowed to have I/O operations dispatched to the hardware storage device; wherein, based on either a most recent or current I/O operation dispatched to a hardware storage device, using the de-randomizer and budget data structure to identify sequential and sparse operations for a first entity of the plurality of entities to dispatch to the hardware storage device when the first entity has sufficient budget to have the I/O operation performed on its behalf, wherein when selecting the next operation for a first entity, the relative cost of the next operation is determined, including a comparison to other I/O operations and a cost for seek time, and the de-randomizer prioritizes selecting a sequential I/O operation in a given slot over a sparse I/O operation in the given slot; wherein, based on determining that (i) the first entity has sufficient budget to have an I/O operation performed on its behalf, and that (ii) there are no remaining queued sequential operations in the given slot, using the de-randomizer to select a next sparse operation and to dispatch the next sparse operation to the hardware storage device; and wherein, based on determining that the first entity lacks sufficient budget to have an additional I/O operation performed on its behalf, using the de-randomizer to identify an I/O operation for a second entity of the plurality of entities to dispatch to the hardware storage device. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A hardware storage device comprising computer executable instructions that when executed by one or more processors cause the following method to be performed:
-
operating a de-randomizer that comprises a plurality of slots for a hardware storage device, each slot comprising a queued list for listing I/O operations to be dispatched to the hardware storage device, wherein the slots are organized based on the hardware storage device size and offsets into the hardware storage device such that operations adjacent to each other in a queued list in the same slot are treated as sequential I/O operations to the hardware storage device to determine I/O cost, and non-adjacent operations within the same slot are treated as sparse I/O operations to the hardware storage device to determine I/O cost, and I/O operations from different queued lists in different slots are treated as random I/O operations to the hardware storage device to determine operation cost; queueing, at a plurality of entity queues coupled to the de-randomizer, I/O operations for the plurality of entities to the hardware storage device; tracking, at a budget data structure coupled to the de-randomizer, budgets credits for the plurality of entities to determine which of the plurality of entities have sufficient budget to be allowed to have I/O operations dispatched to the hardware storage device; wherein, based on either a most recent or current I/O operation dispatched to a hardware storage device, using the de-randomizer and budget data structure to identify sequential and sparse operations for a first entity of the plurality of entities to dispatch to the hardware storage device when the first entity has sufficient budget to have the I/O operation performed on its behalf, wherein when selecting the next operation for a first entity, the relative cost of the next operation is determined, including a comparison to other I/O operations and a cost for seek time, and the de-randomizer prioritizes selecting a sequential I/O operation in a given slot over a sparse I/O operation in the given slot; wherein, based on determining that (i) the first entity has sufficient budget to have an I/O operation performed on its behalf, and that (ii) there are no remaining queued sequential operations in the given slot, using the de-randomizer to select a next sparse operation and to dispatch the next sparse operation to the hardware storage device; and wherein, based on determining that the first entity lacks sufficient budget to have an additional I/O operation performed on its behalf, using the de-randomizer to identify an I/O operation for a second entity of the plurality of entities to dispatch to the hardware storage device. - View Dependent Claims (19, 20)
-
Specification