A Storage Device Emulator for System Performance Evaluation


  The performance and characteristic of the storage devices used in embedded systems can have a great influence on the overall end user experience. When building embedded systems or designing new storage device components, it is important for the designers to be able to evaluate how storage devices of different characteristics will affect the overall system performance. Storage device emulation enables a system to be evaluated with simulated storage devices that are not yet available. In storage device emulation, the emulated storage device appears to the operating system (OS) as a real storage device and its service timings are determined by a disk model which simulates the behavior of the target storage device. In the conventional storage device emulators, because the OS is running continuously in the real-time domain, the amount of time that the emulator can spend on processing each I/O request is bounded by the service time of that particular I/O request. This timing constraint can make emulating of high-speed storage devices a challenge for the conventional storage device emulator. In this article, we propose an OS state pausing approach to storage device emulation which can overcome the timing constraints faced by the conventional storage device emulators. By pausing the state of the OS when the storage device emulator is busy, the proposed emulator can spend as much time as it needs for processing each I/O request without affecting the performance of the emulated storage device as perceived by the OS. In addition, the main task of storage device emulation is offloaded to an external computer to minimize the impact of the emulation process on the target machine. The proposed storage device emulator is implemented with the Linux OS . Experimental results show that the performances measured with the proposed storage device emulator are within 2% differences compared to the results from the reference storage devices.


Reference:

Source code:
    The source code of this work is available on GitHub.


cjtsai@cs.nctu.edu.tw (Feb. 14, 2014)