IP Library Granted Patent US 7,945,657
Granted Patent B1
US 7,945,657 · App. 11/093,998 · Granted May 17, 2011

System and method for emulating input/output performance of an application

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,945,657
App. No.
11/093,998
Granted
May 17, 2011
Kind
B1
Abstract

A system and method for emulating the input/output performance of an application. A workload description language is used to produce a small but accurate model of the application, which is flexible enough to emulate the application's performance with varying underlying system configurations or operating parameters. The model describes I/O operations performed by the application, and reflects any dependencies that exist between different application threads or processes. The model is then executed or interpreted with a particular system configuration, and various parameters of the I/O operations may be set at the model's run-time. During execution, the input/output operations described in the model are generated according to the specified parameters, and are performed. The system configuration and/or I/O operation parameters may be altered and the model may be re-run.

Claims (82)

1. A computer-implemented method of emulating an input/output performance of an application, comprising:

obtaining a model of the application's workload, wherein said model describes the application's input/output behavior within different layers of an input/output stack, the input/output behavior comprising:

input/output operations performed by the application; and

input/output dependencies between application threads or processes, wherein an input/output dependency occurs when an input or output operation from one thread or process blocks an input or output operation from another thread or process;

setting one or more parameters for said input/output operations;

setting one or more parameters in the model for a computing environment

under which the model is executed or interpreted; and interpreting said model to:

generate said input/output operations configured according to said parameters; and

perform said generated input/output operations.

2. The method of claim 1 , wherein said dependency involves one of the two or more threads blocking on another of the two or more threads.

3. The method of claim 1 , further comprising, prior to said obtaining.

executing the application;

tracing input/output performed by the application during the execution; and

creating said model to describe said traced input/output.

4. The method of claim 3 , wherein said tracing comprises:

capturing all input/output operations performed by the application during said execution;

identifying characteristics of the application, said characteristics including at least one of the following:

number of application processes;

number of executing threads;

number of files manipulated;

types of input/output operations performed; and

quantity of each type of input/output operation performed.

5. The method of claim 3 , wherein said creating comprises:

identifying types of input/output operations performed during said execution; and

for each type of input/output operation, statistically reducing the identified input/output operations of said type into a probability distribution.

6. The method of claim 3 , further comprising:

during said executing of the application, capturing summary statistics describing the traced input/output; and

after said interpreting:

capturing emulation statistics describing said performed input/output operations; and

comparing said summary statistics with said emulation statistics.

7. The method of claim 1 , further comprising:

changing one or more of said parameters; and

re-interpreting said model to generate said input/output operations having the changed parameters.

8. The method of claim 1 , further comprising:

changing a filesystem on which said input/output operations are performed.

9. The method of claim 1 , further comprising:

changing an operating system on which said input/output operations are performed.

10. The method of claim 1 , further comprising:

changing an access method by which said input/output operations are performed.

11. The method of claim 1 , wherein said model comprises:

one or more model processes, each said model process having one or more process parameters and comprising a set of model threads;

wherein each said model thread has one or more thread parameters and comprises a series of flow operations, wherein each of the flow operations is a predefined operation; and

wherein each said flow operation has one or more operation parameters and describes one of said input/output operations.

12. The method of claim 1 , wherein the one or more parameters for the computing environment comprise at least one of:

a file system,

an operating system,

a storage device, or

one or more communication interfaces.

13. A non-transitory computer readable medium storing instructions that, when executed by a computer, cause the computer to perform a method of emulating an input/output performance of an application, comprising:

obtaining a model of the application's workload, wherein said model describes the application's input/output behavior within different layers of an input/output stack, the input/output behavior comprising:

input/output operations performed by the application; and

input/output dependencies between application threads or processes, wherein an input/output dependency occurs when an input or output operation from one thread or process blocks an input or output operation from another thread or process;

setting one or more parameters for the input/output operations;

setting one or more parameters in the model for a computing environment under which the model is executed or interpreted; and

interpreting said model to:

generate said input/output operations configured according to said parameters; and

perform said generated input/output operations.

14. The computer-readable medium of claim 13 , wherein the one or more parameters for the computing environment comprise at least one of:

a file system,

an operating system,

a storage device, or

one or more communication interfaces.

15. A computer system for modeling an application's input/output, comprising:

a processor;

a model describing the application's input/output behavior within different layers of the input/output stack, the input/output behavior comprising:

input/output operations performed by the application, and

input/output dependencies between application threads or processes, wherein an input/output dependency occurs when an input or output operation from one thread or process blocks an input or output operation from another thread or process;

a set of input/output operation parameters;

a set of computing environment parameters under which the model is executed or interpreted;

wherein the processor is configured as an interpreter that generates the input/output operations configured according to the set of parameters; and

a file system configured to perform said input/output operations on a set of files described by the mode.

16. The computer system of claim 15 , wherein:

said interpreter generates the input/output operations in a manner reflecting said dependencies.

17. The computer system of claim 15 , further comprising:

a set of operation files, wherein said interpreter invokes one of the operation files for each type of input/output operation generated.

18. The computer system of claim 15 , further comprising:

a collection of storage devices storing the set of files.

19. The computer system of claim 15 , wherein the one or more parameters for the computing environment comprise at least one of:

a file system,

an operating system,

a storage device, or

one or more communication interfaces.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0101 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2005
From: MCDOUGALL, RICHARD J.; SHEPLER, SPENCER; WONG, BRIAN L.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 016436/0431 →