IP Library Granted Patent US 9,183,111
Granted Patent B2
US 9,183,111 · App. 13/467,375 · Granted Nov 10, 2015

Methods and computer program products for collecting storage resource performance data using file system hooks

Inventor: Glenn Nethercutt (Raleigh, NC)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F11/3485G06F8/41G06F9/443G06F9/44521G06F11/3006G06F11/3093G06F11/3409G06F11/3476
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,183,111
App. No.
13/467,375
Granted
Nov 10, 2015
Kind
B2
Abstract

Provided are methods and computer program products for collecting storage resource performance data using file system hooks. Methods may include determining a location for a function dispatch table, and modifying the function dispatch table to redirect a request for an operation. In response to a received request for the operation, an intent to perform the operation is recorded to estimate an operational queue length, and data associated with the operation is recorded in a hash table. In response to recording data associated with the operation, a function corresponding to the operation to perform the operation is invoked. Elapsed time and storage size is recorded.

Claims (43)

1. A method for collecting storage resource performance data, the method comprising:

determining a location in the memory for a function dispatch table that is configured to store pointers to read and/or write functions corresponding to a file system;

modifying the function dispatch table to redirect a request for an operation;

recording, responsive to a received request for the operation, an intent to perform the operation to estimate an operational queue length;

recording, responsive to the received request for the operation, data associated with the operation in a hash table;

invoking, responsive to recording data associated with the operation, a function corresponding to the operation to perform the operation; and

recording elapsed time and storage size responsive to a received notification of completion of the operation,

wherein at least one of determining the location, modifying the function dispatch table, recording the intent to perform the operation, recording the data in the hash table, invoking the function, and recording elapsed time and storage size is performed using at least one data processor, and

wherein determining the location comprises resolving a kernel object symbol to extract the location.

2. The method according to claim 1 , wherein the function dispatch table comprises a dynamically loaded vnode function dispatch table.

3. The method according to claim 1 , wherein the operation comprises a read and/or a write operation.

4. The method according to claim 1 , wherein the operation corresponds to memory mapped inputs and/or outputs.

5. The method according to claim 1 , wherein modifying the function dispatch table to redirect a request for the operation comprises hooking the file system read and/or write functions.

6. The method according to claim 1 , wherein recording the intent to perform the operation comprises using a first set of file system hook functions.

7. The method according to claim 6 , wherein the particular operation includes calculating the operational queue length.

8. The method according to claim 1 , after recording the data associated with the operation in the hash table, further comprising indexing the data recorded in the hash table by a file system type and/or by a mount point name.

9. The method according to claim 8 , wherein indexing the data recorded in the hash table comprises primarily indexing the data by the file system type and secondarily indexing the data by the mount point name.

10. The method according to claim 1 , wherein invoking the function corresponding to the operation to perform the operation comprises performing a specific action corresponding to the operation.

11. The method according to claim 1 , the method further comprising:

modifying the function dispatch table to redirect a notification of completion of the operation,

wherein recording elapsed time and storage size is performed using a second set of file system hook functions, and

wherein elapsed time and storage size is recorded responsive to a received notification of completion of the operation.

12. A computer program product comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising:

computer readable program code that is configured to modify a function dispatch table that is configured to store pointers to read and/or write functions corresponding to a file system to redirect a request for a read and/or a write operation;

computer readable program code that is configured to record an intent to perform the read and/or write operation to estimate an operational queue length in response to a received request for the read and/or write operation;

computer readable program code that is configured to record data associated with the operation in a hash table in response to the received request for the read and/or write operation;

computer readable code that is configured to invoke a function corresponding to the read and/or write operation to perform the read and/or write operation; and

recording an elapsed time and a storage size responsive to a received notification of completion of the operation,

wherein the location is determined by resolving a kernel object symbol to extract the location.

13. The computer program product according to claim 12 , further comprising:

computer readable program code that is configured to modify the function dispatch table to redirect a notification of completion of the read and/or write operation,

wherein recording elapsed time and storage size is performed using a second set of file system hook functions, and

wherein elapsed time and storage size is recorded responsive to a received notification of completion of the read and/or write operation.

14. The computer program product according to claim 12 , wherein the function dispatch table includes a dynamically loaded vnode function dispatch table.

15. The computer program product according to claim 12 , wherein the read and/or write operation corresponds to memory mapped inputs and/or outputs.

16. The computer program product according to claim 12 , wherein the function dispatch table is modified to redirect the request for the read and/or write operation by hooking file system read and/or write functions.

17. The computer program product according to claim 12 , after the data associated with the read and/or write operation is recorded in the hash table, further comprising computer readable program code that is configured to index the data recorded in the hash table by a file system type and/or by a mount point name,

wherein the data recorded in the hash table is indexed by primarily indexing the data by the file system type and secondarily indexing the data by the mount point name.

18. The computer program product according to claim 12 , wherein the intent to perform the read and/or write operation is performed using a first set of file system hook functions, and

wherein the particular read and/or write operation includes calculating the operational queue length.

19. The method according to claim 1 , wherein elapsed time comprises an amount of time from receipt of the request for the operation to time of receipt of the notification of completion of the operation.

20. The computer program product according to claim 12 , wherein elapsed time comprises an amount of time from receipt of the request for the operation to time of receipt of notification of completion of the operation.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2015
From: BLUE STRIPE SOFTWARE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 035966/0655 →
RELEASE OF SECURITY INTEREST Recorded Jun 19, 2015
From: SQUARE 1 BANK
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 035869/0518 →
SECURITY INTEREST Recorded Oct 7, 2014
From: BLUE STRIPE SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 033903/0255 →
RELEASE OF SECURITY INTEREST Recorded Oct 4, 2013
From: SQUARE 1 BANK
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 031351/0639 →
SECURITY AGREEMENT Recorded Jul 29, 2013
From: BLUE STRIPE SOFTWARE, INC.
To: SQUARE 1 BANK
Reel/Frame 030919/0136 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2012
From: NETHERCUTT, GLENN
To: BLUE STRIPE SOFTWARE, INC.
Reel/Frame 028310/0042 →
Continuity (2)
Provisional Application 61484391 · May 10, 2011
Related Publication 20120290718A1 · Nov 15, 2012