The present invention relates to the analysis of the behaviour of a storage system, such as a hard disk drive. It relates to a method of generating Input/Output (I/O) loads on the storage system and analysing the behaviour of the storage system under such workloads. It is particularly, but not exclusively, concerned with single and multi-thread workloads such as Audio/Visual (AV) applications which have isochronous and possibly additional anisochronous access characteristics, to permit replication and extension of those workloads.
The invention may be used with a host system to target storage system extension of I/O workload characteristics, and creation of new, hypothetical likely host data storage access patterns of applications and systems using a generic host computer.
As storage systems (single hard disk drives and arrays) are designed into more and more diverse applications, both host system and storage system designers need methods to evaluate the storage and I/O performance, functionality and overall suitability to the host application data access demands. Determining the time for each I/O operation to complete and how this performance measurement relates to the application and device configurations, will allow informed design or optimisation decisions to be made.
Host designers need to ensure the storage system is suitable for meeting the application needs, both in performance and reliability given an application usage profile, and to make design decisions including but not limited to; the best implementation of interface and data access pattern and typical command sector count, file system structure, physical storage device mounting etc . . . in order to optimise the total system design for required reliability and/or performance.
Storage device manufacturers need a way to explore how data access patterns and other host and storage design factors affect storage performance and command handling, so as to evaluate and improve storage design and operating mode optimisation for target applications.
A method is required which allows the generation of complex host application data access behaviour in order to test storage suitability. This access behaviour is based either on analysis of a real host system, followed by direct mimicking of this pattern, or modification of said access behaviour to explore evolutionary proposals, configuration choices, or purely hypothetical access behaviour pattern generation for new host application design proposals.
Once the required host application data access pattern has been generated, methods are required to measure the storage response times to individual I/O events and for statistical analysis of such data.
Typical storage I/O workload initiator software available, and other documented methods of I/O workload generation do not provide the flexibility to accurately define many typical but complex multi-threaded access patterns of emerging AV streaming devices. Some do not give accurate or absolute control over several progressive characteristics of an I/O event pattern, such as the exact storage addressing locations of individual thread I/O events, I/O transfer size and type characteristics. They typically offer only specific patterns or sequential/random options with weighting factors. They also do not offer specific time scheduling of independent and interrelated events of a data access workload, coupled with detailed timing response measurements at the thread level and statistical analysis of this data to assist in design and system optimisation. Other known ways of I/O workload generation are based on defining mean factors with heavy-tailed Poisson distributions, or specific mathematical distributions for several characteristics including spatial locality of I/O access request, I/O transfer sizes, I/O type and I/O request timing. These are typically based on extrapolation of characteristics from Asynchronous IT system workloads, where the mix of events from several client applications or processes are indeed high in characteristic variances. They therefore do not adequately capture and replicate the event sequence inter-relationships of many AV application workloads, where many of the processes are continuous and regular data rate and access location pattern, with low variance or no variance in iterative event characteristics. Additionally, many storage performance measurement methods are concerned primarily with testing maximum storage system throughput, i.e., saturation of the storage system with I/O requests in a defined sequence to determine the overall data rate achieved, rather than offering the facility to deliver a timed arrival pattern. Therefore, these are not generally suitable for generating isochronous workload patterns or analysis of storage system behaviours under such workloads.
Alternatively, to achieve a realistic emulation of the proposed host application for the purpose of testing storage behaviour under specific isochronous and mixed thread workloads it would theoretically be possible to take actual programming of the actual step-by-step sequence of I/O commands, using an I/O sequencer, or record and playback of I/O activity from a real application. Step-by-step generation of a sequence is complex and time consuming. Record and replay is only possible where the real application exists. Neither of these approaches easily afford modification of the data access pattern characteristics, e.g. to enable a sensitivity study, without further extensive reprogramming.