IP Library Granted Patent US 9,239,682
Granted Patent B2
US 9,239,682 · App. 13/779,260 · Granted Jan 19, 2016

I/O hint framework for Server Flash Cache

Inventors: Deng Liu (Mountain View, CA); Thomas A. Phelan (San Francisco, CA); Li Zhou (Campbell, CA); Ramkumar Vadivelu (San Jose, CA); Sandeep Uttamchandani (Cupertino, CA)
Assignee: VMware, Inc.
G06F3/0611G06F3/0659G06F3/0689G06F12/126G06F2212/222G06F2212/6026G06F2212/6028
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,239,682
App. No.
13/779,260
Granted
Jan 19, 2016
Kind
B2
Abstract

An I/O hint framework is provided. In one embodiment, a computer system can receive an I/O command originating from a virtual machine (VM), where the I/O command identifies a data block of a virtual disk. The computer system can further extract hint metadata from the I/O command, where the hint metadata includes one or more characteristics of the data block that are relevant for determining how to cache the data block in a flash storage-based cache. The computer system can then make the hint metadata available to a caching module configured to manage the flash storage-based cache.

Claims (50)

1. A method for passing input/output (I/O) hints, the method comprising:

receiving, by a hypervisor of a computer system, an I/O command originating from a virtual machine (VM), the I/O command identifying a data block of a virtual disk;

extracting, by the hypervisor from the I/O command, hint metadata that is embedded in the I/O command, the hint metadata including one or more I/O hints that are relevant for determining how to cache the data block in a flash storage-based cache; and

making, by the hypervisor, the hint metadata available to one of a plurality of caching modules of the hypervisor, each of the plurality of caching modules being configured to manage the flash storage-based cache,

wherein when the I/O command comprises a first opcode indicating that the hint metadata includes one or more vendor-defined I/O hints:

extracting the hint metadata comprises, extracting a vendor identifier and the hint metadata from one or more first fields of the I/O command, the vendor identifier identifying a vendor that has defined the one or more vendor-defined I/O hints and has implemented a vendor-specific caching module in the plurality of caching modules, the vendor-specific caching module being is configured to interpret the one or more vendor-defined I/O hints in order to determine how to cache the data block in the flash storage-based cache; and

making the hint metadata available to one of the plurality of caching modules comprises making the hint metadata available solely to the vendor-specific caching module.

2. The method of claim 1 wherein the hint metadata is determined by an application running within the VM.

3. The method of claim 1 wherein

the extracted hint metadata is stored in a data token.

4. The method of claim 3 wherein the structure of the data token is not visible to the plurality of caching modules.

5. The method of claim 4 wherein

the extracted hint metadata is made available to one of the plurality of caching modules by exposing a public Application Programming Interface (API) that is callable by the caching module for retrieving the extracted hint metadata from the data token.

6. The method of claim 1 wherein the vendor identified by the vendor identifier is distinct from a vendor of the hypervisor.

7. The method of claim 1 wherein the one or more vendor-defined I/O hints are proprietary to the vendor identified by the vendor identifier, such that the one or more vendor-defined I/O hints cannot be understood by other caching modules in the plurality of caching modules that are not implemented by the vendor.

8. The method of claim 1 wherein the hint metadata includes at least three I/O hints corresponding to I/O sequentiality, future access frequency, and desired I/O latency of the data block.

9. The method of claim 1 wherein if the I/O command comprises a second opcode indicating that the hint metadata does not include any vendor-defined I/O hints:

the hint metadata is extracted from one or more second fields of the I/O command that are different from the one or more first fields; and

the hint metadata is made available any currently active caching module in the plurality of caching modules.

10. The method of claim 9 wherein the I/O command is a Small Computer System Interface (SCSI) Command Descriptor Block (CDB).

11. The method of claim 10 wherein the one or more first fields include bytes 10-24 of the SCSI CDB.

12. The method of claim 10 wherein the one or more second fields include a group number field of the SCSI CDB.

13. A non-transitory computer readable storage medium having stored thereon computer software for a hypervisor executable by a processor, the computer software embodying a method for passing I/O hints, the method comprising:

receiving, by a hypervisor of a computer system, an I/O command originating from a VM, the I/O command identifying a data block of a virtual disk;

extracting, from the I/O command, hint metadata that is embedded in the I/O command, the hint metadata including one or more I/O hints that are relevant for determining how to cache the data block in a flash storage-based cache; and

making the hint metadata available to one of a plurality of caching modules of the hypervisor, each of the plurality of caching modules being configured to manage the flash storage-based cache,

wherein when the I/O command comprises a first opcode indicating that the hint metadata includes one or more vendor-defined I/O hints:

extracting the hint metadata comprises, extracting a vendor identifier and the hint metadata from one or more first fields of the I/O command, the vendor identifier identifying a vendor that has defined the one or more vendor-defined I/O hints and has implemented a vendor-specific caching module in the plurality of caching modules, the vendor-specific caching module being is configured to interpret the one or more vendor-defined I/O hints in order to determine how to cache the data block in the flash storage-based cache; and

making the hint metadata available to one of the plurality of caching modules comprises making the hint metadata available solely to the vendor-specific caching module.

14. The non-transitory computer readable storage medium of claim 13 wherein if the I/O command comprises a second opcode indicating that the hint metadata does not include any vendor-defined I/O hints:

the hint metadata is extracted from one or more second fields of the I/O command that are different from the one or more first fields; and

the hint metadata is made available to any currently active caching module in the plurality of caching modules.

15. The non-transitory computer readable storage medium of claim 14 wherein the I/O command is a Small Computer System Interface (SCSI) Command Descriptor Block (CDB).

16. The non-transitory computer readable storage medium of claim 15 wherein the one or more first fields include bytes 10-24 of the SCSI CDB.

17. The non-transitory computer readable storage medium of claim 15 wherein the one or more second fields include a group number field of the SCSI CDB.

18. A system comprising:

a flash storage device configured to store a flash cache; and

a hypervisor configured to:

receive an I/O command originating from a VM, the I/O command identifying a data block of a virtual disk;

extract, from the I/O command, hint metadata that is embedded in the I/O command, the hint metadata including one or more I/O hints that are relevant for determining how to cache the data block in a flash storage-based cache; and

make the hint metadata available to one of a plurality of caching modules of the hypervisor, each of the plurality of caching modules being configured to manage the flash storage-based cache,

wherein when the I/O command comprises a first opcode indicating that the hint metadata includes one or more vendor-defined I/O hints:

extracting the hint metadata comprises, extracting a vendor identifier and the hint metadata from one or more first fields of the I/O command, the vendor identifier identifying a vendor that has defined the one or more vendor-defined I/O hints and has implemented a vendor-specific caching module in the plurality of caching modules, the vendor-specific caching module being is configured to interpret the one or more vendor-defined I/O hints in order to determine how to cache the data block in the flash storage-based cache; and

making the hint metadata available to one of the plurality of caching modules comprises making the hint metadata available solely to the vendor-specific caching module.

19. The system of claim 18 wherein if the I/O command comprises a second opcode indicating that the hint metadata does not include any vendor-defined I/O hints:

the hint metadata is extracted from one or more second fields of the I/O command that are different from the one or more first fields; and

the hint metadata is made available to any currently active caching module in the plurality of caching modules.

20. The system of claim 19 wherein the I/O command is a Small Computer System Interface (SCSI) Command Descriptor Block (CDB).

21. The system of claim 20 wherein the one or more first fields include bytes 10-24 of the SCSI CDB.

22. The system of claim 20 wherein the one or more second fields include a group number field of the SCSI CDB.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2013
From: LIU, DENG; PHELAN, THOMAS A.; ZHOU, LI; VADIVELU, RAMKUMAR; UTTAMCHANDANI, SANDEEP
To: VMWARE, INC.
Reel/Frame 029888/0956 →
Continuity (1)
Related Publication 20140244898A1 · Aug 28, 2014