Quality-of-service scheduling in storage systems

Emerging video surveillance, large-scale sensor networks, and storage-bound Web applications require large, high-performance, and reliable storage systems with high data-throughput as well as short response times for interactive requests. These conflicting requirements call for quality of service (QoS) support. Currently, the most cost-effective non-volatile storage technology for large-volume data is based on magnetic disks. In this dissertation, we first study the preemptibility of disk IOs. Allowing higher-priority requests to preempt ongoing disk IOs is of particular benefit to delay-sensitive interactive and real-time systems. We present the design and implementation of Semi-preemptible IO [22], which divides disk IO requests into multiple short-duration disk commands to improve the preemptibility of disk access. We propose methods to allow preemption of each component of a disk access—seek, rotation, and data transfer. We analyze the performance and describe implementation challenges. Particularly, we explain disk profiling algorithms for accurate disk-performance modeling. Our evaluation shows that Semi-preemptible IO can substantially reduce IO waiting time with little loss in disk throughput. We then investigate the effectiveness of preemptive disk-scheduling algorithms to achieve better quality-of-service (QoS) scheduling. Large storage systems are often implemented using Redundant Arrays of Independent Disks (RAID). We present an architecture for QoS-aware RAID systems [24] that use Semi-preemptible IO for servicing their internal disk IOs. We show when and how to preempt IOs to improve the overall real-time performance of QoS-aware RAID systems. In order to decide when to preempt an IO, we propose preemptive scheduling methods which aim to maximize the total RAID QoS value. In order to decide how to preempt an IO, we introduce two methods for IO preemptions in RAID systems—JIT-preemption and JIT-migration.