IP Library Granted Patent US 10,108,347
Granted Patent B2
US 10,108,347 · App. 14/873,629 · Granted Oct 23, 2018

Measuring performance of data storage systems

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 10,108,347
App. No.
14/873,629
Granted
Oct 23, 2018
Kind
B2
Abstract

A combination of a host system and data storage system that enables accurate performance testing of the storage subsystem is disclosed. In one embodiment, a driver of a host system receives a command message from a host system application. The command message enables the driver to generate and communicate one or more storage access commands to the data storage system. The driver then receives one or more execution results from the data storage system and determines and communicates the total execution time of the one or more storage access commands to the host system application. When the host system application determines performance of the data storage system the undesirable impact of the communication overhead between the host system application and the driver is minimized. Accordingly, accurate performance measurements of data storage systems are obtained.

Claims (38)

1. A method of testing performance of a storage subsystem, the method comprising:

receiving, by a driver running on a host system comprising computer hardware, a first command message from a host system application running on the host system, the first command message comprising an indication of data to be written to the storage subsystem and comprising a pattern for writing the indicated data to the storage subsystem;

generating, by the driver running on the host system in response to receiving the first command message, a plurality of storage access commands comprising write commands for writing the indicated data to the storage subsystem according to the pattern of the first command message;

communicating, by the driver running on the host system, the plurality of storage access commands to a storage subsystem thereby causing the storage subsystem to execute the plurality of storage access commands and write the indicated data to the storage subsystem according to the pattern of the first command message;

receiving, by the driver running on the host system, from the storage subsystem one or more execution results associated with execution of respective storage access commands of the plurality of storage access commands by the storage subsystem; and

prior to receiving, by the driver running on the host system from the storage subsystem, execution results associated with execution of all of the plurality of storage access commands, providing, to the host system application by the driver running on the host system, an execution time and progress status information based on a subset of the plurality of the storage access commands executed by the storage subsystem.

2. The method of claim 1 , wherein said receiving, by the driver, from the storage subsystem comprises a success indication associated with the execution of one or more of the storage access commands.

3. The method of claim 1 , wherein said receiving, by the driver, from the storage subsystem comprises an error indication associated with the execution of one or more of the storage access commands.

4. The method of claim 1 , wherein the progress status information comprises at least one of a partial progress indication and a percentage of execution.

5. The method of claim 1 , wherein the providing, by the driver, the progress status information to the host system application is in response to a check status command from the host system application.

6. The method of claim 1 , wherein the received one or more execution results indicates a success or error in execution of the plurality of storage access commands at the storage subsystem.

7. The method of claim 1 , wherein the pattern comprises a data pattern indicating how the indicated data is to be written to the storage subsystem.

8. The method of claim 1 , wherein the pattern comprises an execution pattern indicating how the plurality of storage access commands are to be executed to the storage subsystem.

9. The method of claim 1 , wherein the first command comprises data units to be written to the storage subsystem by the write commands.

10. The method of claim 1 , wherein progress status information includes a comparison, calculated by the driver running on the host system, of a total number of the plurality of storage access commands sent to the storage subsystem and a total number of execution results received.

11. A non-transitory computer readable medium that stores executable program instructions that direct a host system to perform a process that comprises:

receiving, by a driver running on the host system comprising computer hardware, a first command message from a host system application running on the host system, the first command message comprising an indication of data to be written to a storage subsystem and comprising a pattern for writing the indicated data to the storage subsystem;

generating, by the driver running on the host system in response to receiving the first command message, a plurality of storage access commands comprising write commands for writing the indicated data to the storage subsystem according to the pattern of the first command message;

communicating, by the driver running on the host system, the plurality of storage access commands to the storage subsystem thereby causing the storage subsystem to execute the plurality of storage access commands and write the indicated data to the storage subsystem according to the pattern of the first command message;

receiving, by the driver running on the host system, from the storage subsystem one or more execution results associated with execution of respective storage access commands of the plurality of storage access commands by the storage subsystem; and

prior to receiving, by the driver running on the host system from the storage subsystem, execution results associated with execution of all of the plurality of storage access commands, providing, to the host system application by the driver running on the host system, an execution time and progress status information based on a subset of the plurality of the storage access commands executed by the storage subsystem.

12. The computer readable medium of claim 11 , wherein said receiving, by the driver, from the storage subsystem comprises a success indication associated with the execution of one or more of the storage access commands.

13. The computer readable medium of claim 11 , wherein said receiving, by the driver, from the storage subsystem comprises an error indication associated with the execution of one or more of the storage access commands.

14. The computer readable medium of claim 11 , wherein the progress status information comprises at least one of a partial progress indication and a percentage of execution.

15. The computer readable medium of claim 11 , wherein the providing, by the driver, the progress status information to the host system application is in response to a check status command from the host system application.

16. The computer readable medium of claim 11 , wherein the first command comprises data units to be written to the storage subsystem by the write commands, and wherein the pattern comprises a data pattern or an execution pattern, the data pattern indicating how the indicated data is to be written to the storage subsystem, and the an execution pattern indicating how the plurality of storage access commands are to be executed to the storage subsystem.

17. A host system that communicates data storage access commands to a storage subsystem, the host system comprising:

a memory storing a driver; and

a hardware processor configured to load the driver from the memory and execute the driver,

wherein when the driver is executed by the hardware processor, the driver is configured to:

receive a first command message from a host system application running on the host system, the first command message comprising an indication of data to be written to the storage subsystem and comprising a pattern for writing the indicated data to the storage subsystem;

generate, in response to receiving the first command message, a plurality of storage access commands comprising write commands for writing the indicated data to the storage subsystem according to the pattern of the first command message;

communicate the plurality of storage access commands to a storage subsystem thereby causing the storage subsystem to execute the plurality of storage access commands and write the indicated data to the storage subsystem according to the pattern of the first command message;

receive from the storage subsystem one or more execution results associated with execution of respective storage access commands of the plurality of storage access commands by the storage subsystem; and

prior to receiving, by the driver from the storage subsystem, execution results associated with execution of all of the plurality of storage access commands, provide, to the host system application by the driver running on the host system, an execution time and progress status information based on a subset of the plurality of the storage access commands executed by the storage subsystem.

18. The host system of claim 17 , wherein said receive from the storage subsystem comprises at least one of a success indication and an error indication associated with the execution of one or more of the storage access commands.

19. The host system of claim 17 , wherein the progress status information comprises at least one of a partial progress indication and a percentage of execution.

20. The host system of claim 17 , wherein the driver is configured to provide the progress status information to the host system application in response to a check status command from the host system application.

Assignments (13)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
RELEASE OF SECURITY INTEREST AT REEL 039389 FRAME 0699 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0553 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
RELEASE OF SECURITY INTEREST Recorded Aug 16, 2016
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 039444/0802 →
SECURITY AGREEMENT Recorded Jul 19, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039389/0699 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2015
From: LEE, BRIAN K.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 036999/0442 →