Exploring storage bottlenecks in Linux based embedded systems
With recent advances in non volatile memory technologies and embedded hardware, large, high speed persistent storage devices can now realistically be used in embedded systems. Traditional models of storage systems, including the implementation in the Linux kernel, assume the performance of storage devices to be far slower than CPU and system memory speeds, encouraging extensive caching and buffering over direct access to storage hardware. In an embedded system, however, processing and memory resources are limited while storage hardware can still operate at full speed, causing this balance to shift, and leading to the observation of performance bottlenecks caused by the operating system rather than the speed of storage devices themselves. In this paper, we present performance and profiling results from high speed storage devices attached to a Linux based embedded system, showing that the kernel's standard file I/O operations are inadequate for such a set up, and that `direct I/O' may be preferable for certain situations. Examination of the results identifies areas where potential improvements may be made in order to reduce CPU load and increase maximum storage throughput.
SIGBED