此前针对linux IO栈与IO调度器,小编有过基本原理的分析,前文阅读请参考:
-
《存储IO路径》专题:四种IO栈全能大比武
-
《存储IO路径》专题:不同IO调度器的差异
近期,小编看到一篇来自University of Louisville的研究团队2023发表的论文,针对现代超低延迟存储设备的性能优化问题,提出了一个关于是否仍然需要I/O调度器的探讨,让我们来一起看下,论文的研究内容是否符合我们一致的认知。
在过去,由于机械硬盘(HDD)受到物理运动部件如磁盘旋转速度和读写臂移动的限制,操作系统中的I/O调度器在优化存储设备性能方面扮演着至关重要的角色,通过精心安排请求以减少寻道时间和提高连续性访问效率。
然而,随着固态硬盘(SSD)尤其是超低延迟(ULL,Ultra-Low Latency)存储技术的发展,其基于闪存NAND或相变存储器PCM等先进技术,已经能够提供低于10微秒的访问延迟,硬件内部结构也更加适合并发处理多个请求。在这种情况下,I/O调度器所需花费的微秒级处理时间可能占到整体应用I/O请求响应时间的一个显著比例,并且由于SSD内部结构对于系统软件来说是抽象化的,所以传统的调度策略对SSD性能优化的效果变得不确定。
论文中,研究人员使用了Intel Optane SSD来测量Linux I/O调度算法对性能和能源效率的影响。实验结果表明,对于ULL存储设备,采用I/O调度器并不能带来性能提升,反而会增加请求延迟并降低吞吐量与能效。
实验采用了四种Linux内核中的I/O调度器:默认配置下的io_uring、mq-deadline、kyber以及bfq,并与优化配置下的io_uring进行了比较。结果显示,在单一进程和队列深度为1的情况下,io_uring在启用特定性能选项后,对于4 KB读写请求的中位数延迟显著降低,相比其他调度器减少6.5%至20.5%不等。
尽管认识到在较慢设备或关注公平性和服务质量(QoS)指标时,I/O调度器的价值依然存在,但研究团队认为,在追求性能和能效提升的角度上,对于ULL级别存储设备而言,I/O调度器的作用已不再必要。