IP Library Granted Patent US 7,783,787
Granted Patent B1
US 7,783,787 · App. 10/171,140 · Granted Aug 24, 2010

System and method for reprioritizing high-latency input/output operations

Assignee: NetApp, Inc.
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 7,783,787
App. No.
10/171,140
Granted
Aug 24, 2010
Kind
B1
Abstract

A mechanism for reprioritizing high-latency input/output operations in a file system is provided. The mechanism expands a file access protocol, such as the direct access file system protocol, by including a hurry up command that adjusts the latency of a given input/output operation. The hurry up command can be employed in the Direct Access File System.

Claims (106)

1. A method for modifying a latency of an input/output (I/O) request on a storage system, comprising:

receiving the I/O request from a computer, the request including a maximum latency value;

storing the I/O request in memory;

receiving a hurry up message from the computer, the hurry up message identifying the I/O request; and

changing, in response to the hurry up message, the maximum latency value of the I/O request to a reduced value.

2. The method of claim 1 , further comprising: storing the I/O request in a buffer in a volatile memory.

3. The method of claim 1 , further comprising: writing, in response to expiration of the reduced value, the I/O request to persistent storage.

4. The method of claim 3 , further comprising: sending, in response to writing the I/O request to persistent storage, an acknowledgment of the I/O request to the computer.

5. The method of claim 3 , further comprising: using a nonvolatile random access memory as the persistent storage.

6. The method of claim 3 further comprising: using disk storage as the persistent storage.

7. The method of claim 1 , further comprising: setting the reduced value to zero.

8. A computer, comprising:

a memory; and

a processor to,

i) receive an input/output (I/O) request, the request including a maximum latency value,

ii) store the I/O request in memory,

iii) receive a hurry up message identifying the I/O request, and

iv) change, in response to the hurry up message, the maximum latency value of the I/O request to a reduced value.

9. The computer of claim 8 , further comprising: a buffer in a volatile memory to store the I/O request.

10. The computer of claim 8 , further comprising:

a persistent storage,

the processor to write, in response to expiration of the reduced value, the I/O request to persistent storage.

11. The computer of claim 10 , further comprising: a processor to send, in response to writing the I/O request to persistent storage, an acknowledgment of the I/O request.

12. The computer of claim 10 , further comprising: a nonvolatile random access memory as the persistent storage.

13. The computer of claim 10 further comprising: a disk storage as the persistent storage.

14. The computer of claim 8 , further comprising: a value of zero as the reduced value.

15. A computer readable hardware media, comprising:

the computer readable hardware media containing instructions for the execution in a processor for the practice of the method of,

receiving an input/output (I/O) request from a computer, the request including a maximum latency value;

storing the I/O request in a memory;

receiving a hurry up message from the computer, the hurry up message identifying the I/O request; and

changing, in response to the hurry up message, the maximum latency value of the I/O request to a reduced value.

16. A method for modifying a latency of a message, comprising:

receiving a first message at a computer, the first message including an associated first latency value indicating a maximum latency period in which the first message should be acknowledged;

storing the first message and associated first latency value in a memory of the computer;

receiving a second message at the computer, the second message including a second latency value;

replacing the first latency value stored in the memory with the second latency value to thereby indicate a new maximum latency period in which the first message should be acknowledged.

17. The method of claim 16 , further comprising:

storing the first message in persistent memory; and

in response to storing the first message, sending an acknowledgment of the first message from the computer.

18. A computer, comprising:

a buffer for storing a first message including an associated first latency value indicating a maximum latency period in which the first message should be acknowledged; and

a processor configured to, in response to receiving a second message at the computer, the second message including a second latency value, replace the first latency value stored in the memory with the second latency value to thereby indicate a new maximum latency period in which the first message should be acknowledged.

19. The computer of claim 18 , further comprising:

a persistent memory;

the processor further configured to store the first message in persistent memory and in response to storing the first message, to send an acknowledgment of the first message.

20. A method for a server to modify a latency of an input/output (I/O) operation in response to a client, the method comprising:

receiving an I/O operation request at the server from the client, the request having a maximum latency value for the I/O operation;

receiving a hurry up message at the server from the client, the hurry up message requesting that the maximum latency value of the I/O operation be modified by the server; and

in response, modifying the maximum latency value of the I/O operation at the server.

21. The method as in claim 20 , wherein the hurry up message specifies an alternate latency value for the I/O operation.

22. The method as in claim 21 , further comprising:

modifying the maximum latency value of the I/O operation to the alternate latency value.

23. The method as in claim 21 , wherein the alternate latency value is a reduced value.

24. The method as in claim 21 , wherein the alternate latency value is zero.

25. The method as in claim 24 , further comprising:

in response to a zero latency value, substantially immediately performing the I/O operation.

26. The method as in claim 20 , further comprising:

performing the I/O operation no later than upon expiration of the maximum latency value of the I/O request.

27. The method as in claim 20 , further comprising:

sending an acknowledgment of the I/O operation to the client no later than upon expiration of the maximum latency value of the I/O request.

28. The method as in claim 20 , further comprising:

sending an acknowledgment of the I/O operation to the client upon completion of the I/O operation.

29. The method as in claim 20 , wherein the I/O request is a read request.

30. The method as in claim 20 , wherein the I/O request is a write request.

31. The method as in claim 30 , further comprising:

storing the received I/O operation in a volatile memory; and

writing the I/O operation to persistent storage no later than upon expiration of the maximum latency value.

32. The method as in claim 31 , wherein the persistent storage is a disk storage.

33. The method as in claim 31 , wherein the persistent storage is a nonvolatile random access memory (NVRAM) storage.

34. The method as in claim 33 , further comprising:

using the NVRAM persistent storage until the I/O operation is written to a slower persistent storage.

35. The method as in claim 20 , further comprising:

storing the received I/O operation in a buffer.

36. The method as in claim 35 , wherein the hurry up message specifies the I/O operation; the method further comprising:

locating the buffer associated with the I/O operation.

37. The method as in claim 36 , further comprising:

copying the located buffer to persistent storage no later than upon expiration of the maximum latency value; and

in response, sending an acknowledgment of the I/O operation to the client.

38. The method as in claim 20 , further comprising:

receiving the I/O request as a high-latency request.

39. The method as in claim 38 , further comprising:

modifying the maximum latency value of the I/O request to be a low-latency request.

40. A server computer, comprising:

a network adapter adapted to receive an operation request, the operation having an associated first latency value specifying a maximum latency period in which the operation should be acknowledged by the computer;

a buffer adapted to store the operation and associated first latency value;

the network adapter further adapted to receive a hurry up message having a second latency value and specifying the operation; and

a processor adapted to replace the first latency value stored in the buffer with the second latency value in response to a received hurry up message to thereby specify a New maximum latency period in which the operation should be acknowledged by the computer.

41. The server computer as in claim 40 , further comprising:

a persistent memory adapted to store the operation no later than upon expiration on the New maximum latency period; and

wherein the network adapter is further adapted to send an acknowledgment of the operation in response.

42. A method for controlling latency of execution of input/output requests in a server, the method comprising:

receiving an input/output operation request from a client, the input/output operation having an associated latency indicator;

receiving a latency control command from a client requesting a change of the latency indicator associated with the input/output operation; and

in response, changing the latency indicator associated with the input/output operation.

43. The method as in claim 42 , further comprising:

executing the input/output operation with a latency associated with the changed latency indicator.

44. The method as in claim 43 , wherein the latency indicator is associated with an execution priority relative to other pending input/output operations and the executing step executes the input/output operation responsive to the associated execution priority.

45. The method as in claim 42 , wherein the latency command comprises a hurry up command.

46. The method as in claim 42 , wherein the step of changing a latency indicator further comprises the step of changing the latency indicator to a selected value associated with a relative lower latency execution from a value associated with a relatively higher latency execution.

47. The method as in claim 46 , wherein the indicator is changed to a value under a preselected threshold associated with input/output operations requiring relatively low-latency execution.

48. The method as in claim 47 , wherein the threshold is dynamically set depending on queued input/output requests.

49. The method as in claim 47 , wherein the threshold is set dependent on the identity of the client.

50. The method as in claim 42 , wherein the latency indicator specifies a time within which execution of the input/output operation is requested.

51. The method as in claim 42 wherein the latency indicator is a field in the input/output operation request.

52. The method as in claim 51 , wherein the latency control command is received from the client subsequent to receipt of the input/output request.

Assignments (2)
CHANGE OF NAME Recorded May 8, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 067345/0640 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2002
From: DEBERGALIS, MATTHEW S.; LENT, ARTHUR F.; KIMMEL, JEFFREY S.
To: NETWORK APPLIANCE, INC.
Reel/Frame 013335/0232 →