论文部分内容阅读
随着半导体技术的飞速发展,闪存的生产成本随之下降,基于闪存的固态盘(SSD,Solid State Drive)技术在存储系统中的使用越来越广泛,相比于传统的机械式硬盘(HDD,Hard Disk Drive),SSD没有机械部件、内部具有多层次的并行结构,有更高的读写性能。然而,长期以来构建存储系统的设备都采用HDD,导致linux内核中的IO调度算法都是针对HDD进行设计和优化的,不能最大限度地发挥SSD的高性能,因此,linux内核中的SSD IO调度算法是一个有价值的命题。 基于固态盘的特性,设计并实现了三种IO调度算法rws、rwsrp、rwsrsrp。三种算法都利用了通用块层的哈希链表进行请求的后向合并,合并请求的最大大小是使用黑盒测试的方式获取,与linux内核中合并请求时只考虑物理磁盘的极限值不同。除此之外,rws主要考虑了SSD读写请求之间的相互干扰造成的性能下降,将读写请求分离,并分别批量处理读和写请求;rwsrp则在rws的基础上,考虑读请求的同步性和写请求的异步性,赋予读请求较高的优先级,并为避免写请求饿死而设置了写请求最晚服务时间;rwsrsrp在rwsrp的基础上,考虑到顺序模式下读请求的性能远远高于随机模式下的读请求,而写性能相差不大,对读请求按照起始访问地址在红黑树中排序,构造读请求顺序性,另外,还可以方便地对在红黑树中排序的读请求进行前向合并。 在filebench和fio中,对提出的三种IO调度算法与linux3.13.0版本内核下自带的三种IO调度算法(noop、deadline、cfq)进行性能对比测试。Filebench中,fileserver负载下,rws比cfq提升了8%;webserver负载下,rwsrsrp比cfq提升了8%;varmail负载下,rwsrsrp比cfq提升了7%。Fio中读写比例都为50%时,单线程随机情况下,rwsrsrp比cfq提升了8%;单线程顺序情况下,rws比cfq提升了12%;多线程随机情况下,rwsrsrp比cfq提升了7%;多线程顺序情况下,rws比cfq提升了44%。测试结果表明,rwsrsrp适合随机负载;rws和rwsrp适合顺序负载。