P
USRE44818EActiveUtilityPatentIndex 85

Quality of service in virtual computing environments

Assignee: JNAGAL ROHITPriority: Dec 7, 2007Filed: May 4, 2012Granted: Mar 25, 2014
Est. expiryDec 7, 2027(~1.4 yrs left)· nominal 20-yr term from priority
Inventors:JNAGAL ROHITCHITLUR SRINIVASA VENKATESH BABU
G06F 3/0605H04L 67/1097G06F 3/067G06F 3/0659
85
PatentIndex Score
24
Cited by
46
References
42
Claims

Abstract

Methods and apparatus facilitate the management of input/output (I/O) subsystems in virtual I/O servers to provide appropriate quality of services (QoS). A hierarchical QoS scheme based on partitioning of network interfaces and I/O subsystems transaction types are used to classify Virtual I/O communications. This multi-tier QoS method allows virtual I/O servers to be scalable and provide appropriate QoS granularity.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method, comprising
 maintaining a connection, over a network fabric, to a virtual storage network interface layer of an application server, wherein the virtual storage network interface layer is associated with a virtual storage node identifier; 
 presenting, at a physical storage network interface, the virtual storage node identifier to a storage area network; 
 enforcing a hierarchical token bucket resource allocation of bandwidth across the physical storage network interface; 
 receiving, over the connection, a storage command from the virtual storage network interface layer of the application server, wherein the storage command is a command to read data from, or write data to, a target connected to the storage area network; 
 determining a data transfer size associated with the storage command; 
 classifying the storage command relative to the hierarchical token bucket resource allocation to determine a current amount of tokens available; 
 comparing the a data transfer size of the storage command to the current amount of tokens available; 
 processing the storage command, if the current amount of tokens available are sufficient; 
 forwarding the data associated with the storage command to the data's destination, if the current amount of tokens available are sufficient; and 
 buffering the storage command, if the current amount of tokens available are insufficient. 
 
     
     
       2. The method of  claim 1 , wherein further comprising:
 processing the storage command, if the current amount of tokens available are sufficient, wherein processing the storage command includes storing the data associated with said storage command after it has been executed. 
 
     
     
       3. The method of  claim 1 , further comprising, ;
 determining a data transfer size associated with the storage command; and 
 deducting the data transfer size associated with said storage command from the hierarchical token bucket, if the current amount of tokens available are sufficient. 
 
     
     
       4. The method of  claim 1 , wherein buffering the storage command, if the current amount of tokens available are insufficient, includes evaluating said storage command in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, whereby said timer is set when said storage command is buffered. 
     
     
       5. The method of  claim 4 , wherein evaluating said storage command in the buffer with the amount of available tokens, includes adjusting the number of available tokens in the hierarchical token bucket based on a quality of service requirement. 
     
     
       6. The method of  claim 1 , wherein receiving, over the connection, a storage command from the virtual storage network interface layer of the application server, includes buffering said storage command in a buffer. 
     
     
       7. The method of  claim 6 , wherein buffering said storage command in a buffer, includes aggregating storage commands received from one or more connections from the virtual storage network interface layer of the one or more application servers. 
     
     
       8. The method of  claim 7 , wherein, aggregating storage commands received from one or more connections from the virtual storage network interface layer of the application servers, server includes regulating the bandwidth utilized between the one or more application servers over the network fabric. 
     
     
       9. The method of  claim 1 , further comprising, maintaining a connection, over a network fabric, to a local area network interface layer of an application server, to receive local area network packets. 
     
     
       10. The method of  claim 9 , wherein maintaining a connection, over a network fabric, to a local area network interface layer of an application server, to receive local area network packets, includes classifying said local area network packets to the hierarchical token bucket resource allocation to determine a current amount of tokens available. 
     
     
       11. The method of  claim 10 , wherein classifying said local area network packets to the hierarchical token bucket resource allocation to determine a current amount of tokens available, includes comparing the size of said local area network packets to the current amount of tokens available. 
     
     
       12. The method of  claim 11 , wherein comparing the size of said local area network packets to the current amount of tokens available, includes forwarding said local area packets across the a physical local area network to and from the target, if the size of said received local area network packets is less than or equal to the current amount of tokens available. 
     
     
       13. The method of  claim 11 , wherein comparing the size of said local area network packets to the current amount of tokens available, includes buffering said local area packets, if the size of said local area network packets is greater than the current amount of tokens available. 
     
     
       14. The method of  claim 13 , wherein buffering said local area packets, if the size of said local area network packets is greater than the current amount of tokens available, includes evaluating said local area network packets in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, whereby said timer is set when said local area network packets are buffered. 
     
     
       15. The method of  claim 14 , wherein evaluating said local area network packets in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, includes adjusting the number of available tokens in the hierarchical token bucket based on quality of service requirement. 
     
     
       16. The method of  claim 1 , wherein a root node of the hierarchical token bucket resource allocation corresponds to the physical storage network interface, and wherein a first node is a child node of the root node and corresponds to the application server, and a second node is a child of the first node and corresponds to the virtual storage network interface of the application server. 
     
     
       17. An apparatus comprising
 an input/output fabric interface; 
 a storage network interface; 
 one or more processors; 
 a memory; 
 one or more input/output virtualization modules comprising computer-readable instructions operative to cause the one or more processors to:
 maintain a connection, over a network fabric, to a virtual storage network interface layer of an application server, wherein the virtual storage network interface layer is associated with a virtual storage node identifier; 
 present, at a physical storage network interface, the virtual storage node identifier to a storage area network; 
 enforce a hierarchical token bucket resource allocation of bandwidth across the physical storage network interface; 
 receive, over the connection, a storage command from the virtual storage network interface layer of the application server, wherein the storage command is a command to read data from, or write data to, a target connected to the storage area network; 
 determine a data transfer size associated with the storage command; 
 classify the storage command relative to the hierarchical token bucket resource allocation to determine a current amount of tokens available; 
 compare the data transfer size of the storage command to the current amount of tokens available; 
 process the storage command, if the current amount of tokens available is sufficient; 
 forward the data associated with the storage command to the data's destination; and 
 buffer the storage command in the memory, if the current amount of tokens available is insufficient. 
 
 
     
     
       18. The apparatus of  claim 17 , further comprising, a computation module to deduct the data transfer size associated with said storage command from the hierarchical token bucket, if the current amount of tokens available is sufficient. 
     
     
       19. The apparatus of  claim 17 , further comprising, a transportation module to transfer the stored data associated with said storage command to their destination. 
     
     
       20. The apparatus of  claim 17 , further comprising, a monitor module to evaluate storage commands stored in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, whereby said timer is set when the storage command is buffered. 
     
     
       21. The apparatus of  claim 20 , wherein the monitor module includes a regulation module to adjust the number of available tokens in the hierarchical token bucket based on required quality of service requirement. 
     
     
       22. The apparatus in  claim 17 , wherein the input/output fabric interface includes buffers to store, aggregate, and regulate said storage commands to and from one or more application servers. 
     
     
       23. The apparatus in  claim 17 , further comprising a physical local area network interface module to transport local area network packets from the application server to targets and from targets to the application server over a local area network. 
     
     
       24. The apparatus in  claim 23 , wherein the local area network interface module is further operative to classify said local area network packets to the hierarchical token bucket resource allocation to determine a current amount of tokens available. 
     
     
       25. The apparatus in  claim 23 , wherein the local area network interface module is further operative to forward said local area network packets across the physical local area network to and from the target, if the size of said local area network packets is less than or equal to the current amount of tokens available. 
     
     
       26. The apparatus in  claim 23 , wherein the local area network interface module is further operative to buffer said local area network packets, if the size of said local area network packets is greater than the current amount of tokens available. 
     
     
       27. The apparatus in  claim 23 , wherein the local area network interface module is further operative to evaluate said local area network packets in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, whereby said timer is set when said local area network packets are buffered. 
     
     
       28. The apparatus in  claim 23 , wherein the local area network interface module is further operative to adjust the number of available tokens in the hierarchical token bucket based on quality of service requirement. 
     
     
       29. The apparatus of  claim 17 , wherein a root node of the hierarchical token bucket resource allocation corresponds to the physical storage network interface, and wherein a first node is a child node of the root node and corresponds to the application server, and a second node is a child of the first node and corresponds to the virtual storage network interface of the application server. 
     
     
       30. A non-transitory data storage medium encoded with computer executable instructions, the computer executable instructions when executed operable to cause a processor to:
 maintain a connection, over a network fabric, to a virtual storage network interface layer of an application server, wherein the virtual storage network interface layer is associated with a virtual storage node identifier; 
 present, at a physical storage network interface, the virtual storage node identifier to a storage area network; 
 enforce a hierarchical token bucket resource allocation of bandwidth across the physical storage network interface; 
 receive, over the connection, a storage command from the virtual storage network interface layer of the application server, wherein the storage command is a command to read data from, or write data to, a target connected to the storage area network; 
 determine a data transfer size associated with the storage command; 
 classify the storage command relative to the hierarchical token bucket resource allocation to determine a current amount of tokens available; 
 compare the data transfer size of the storage command to the current amount of tokens available; 
 process the storage command, if the current amount of tokens available is sufficient; 
 forward the data associated with the storage command to the data's destination; and 
 buffer the storage command in the a memory, if the current amount of tokens available is insufficient. 
 
     
     
       31. The non-transitory data storage medium of  claim 30 , wherein a root node of the hierarchical token bucket resource allocation corresponds to the physical storage network interface, and wherein a first node is a child node of the root node and corresponds to the application server, and a second node is a child of the first node and corresponds to the virtual storage network interface of the application server. 
     
     
       32. A method of facilitating management of input/output subsystems in a virtual input/output server, the method comprising:
 maintaining a connection, over a network fabric, to a virtual interface layer of an application server, to receive input/output communications to an input/output subsystem;   presenting, at a physical interface, a virtual node identifier to the input/output subsystem;   enforcing a hierarchical token bucket resource allocation of bandwidth across the physical interface;   receiving, over the connection, an input/output communication to a target on the input/output subsystem, thereby resulting in received input/output communication;   classifying the received input/output communication relative to the hierarchical token bucket resource allocation to determine a current amount of tokens available;   comparing a size of the received input/output communication to the current amount of tokens available;   forwarding the received input/output communication across the physical interface to the input/output subsystem, if the current amount of tokens available are sufficient; and   buffering the received input/output communication, if the current amount of tokens available are insufficient.   
     
     
       33. The method of claim 32, further comprising:
 processing the received input/output communication, if the current amount of tokens available are sufficient.   
     
     
       34. The method of claim 32, further comprising:
 determining a data transfer size associated with the received input/output communication; and   deducting the data transfer size associated with received input/output communication from the hierarchical token bucket, if the current amount of tokens available are sufficient.   
     
     
       35. The method of claim 32, wherein buffering the received input/output communication, if the current amount of tokens available are insufficient, includes evaluating the received input/output communication in the buffer with the amount of available tokens in the hierarchical token bucket when a timer expires, wherein the timer is set when the received input/output communication is buffered. 
     
     
       36. The method of claim 35, wherein evaluating the received input/output communication in the buffer with the amount of available tokens includes adjusting the number of available tokens in the hierarchical token bucket based on a quality of service requirement. 
     
     
       37. The method of claim 32, wherein receiving, over the connection, an input/output communication for a target on the input/output subsystem includes buffering the input/output communication in a buffer. 
     
     
       38. The method of claim 37, wherein buffering the input/output communication in a buffer, includes aggregating input/output communications received for one or more targets on the input/output subsystem from the virtual interface layer of one or more application servers. 
     
     
       39. The method of claim 38, wherein aggregating input/output communications received for one or more targets on the input/output subsystem includes regulating the bandwidth utilized between the one or more application servers over the network fabric. 
     
     
       40. The method of claim 32, wherein the virtual interface layer is a virtual storage network interface layer, and wherein the input/output subsystem is a storage area network. 
     
     
       41. The method of claim 32, wherein the virtual interface layer is a virtual network interface layer, and wherein the input/output subsystem is a local area network. 
     
     
       42. A method of facilitating management of input/output subsystems in a virtual input/output server, the method comprising:
 maintaining a connection, over a network fabric, to a virtual network interface layer of an application server, to receive local area network packets;   presenting, at a physical network interface, a virtual node identifier to a local area network;   enforcing a hierarchical token bucket resource allocation of bandwidth across the physical network interface;   receiving, over the connection, local area network packets destined for a target on the local area network, thereby resulting in received local area network packets;   classifying the received local area network packets relative to the hierarchical token bucket resource allocation to determine a current amount of tokens available;   comparing a size of the received local area network packets to the current amount of tokens available;   forwarding the received local area packets across the physical local area network to and from the target, if the current amount of tokens available are sufficient; and   buffering the received local area network packets, if the current amount of tokens available are insufficient.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.