为了进行这项研究,他们设计了一套严谨的实验方法论,包括在配备了高速Intel Optane P4801X Series NVMe SSD的服务器上执行一系列微观和宏观基准测试,同时监测系统能耗情况。这些测试涵盖了多种工作负载场景,从单一进程提交大量请求至多租户环境下的混合随机读写请求,旨在全面评估不同I/O调度器在实际应用场景中的表现。
在研究中,实验工作负载的设计旨在全面评估I/O调度器对超低延迟存储设备性能和能源效率的影响。实验采用微观基准测试(Microbenchmarks)和宏观基准测试(Macrobenchmarks)两种方法来分析不同场景下的存储系统极限。
微观基准测试主要用于深入分析存储系统的极限性能,通过针对性地模拟单一或一组特定的I/O操作来测量系统的响应时间和吞吐量。例如,在本研究中,研究人员使用了Flexible IO Tester (fio) 工具生成了一系列针对不同I/O调度器的微基准工作负载,包括单租户和多租户场景下的随机读写请求,并且控制队列深度、IO类型和大小等因素,以精确衡量调度器对单个I/O请求处理的影响。
微观基准测试使用了灵活的IO测试工具fio版本3.31,并利用io_uring作为IO接口,该接口因其高效、异步IO能力及广泛应用而被选择。实验涉及四种不同的I/O调度器:none、mq-deadline、kyber和bfq,每个工作负载都针对这四种调度器重复执行并取五次测试结果的平均值以确保准确性。
微观基准测试结果显示,实验通过使用单租户和多租户场景下的读、写以及混合(50%读取和50%写入)工作负载,对比了none、mq-deadline、kyber和bfq这四种Linux内核自带的I/O调度器在IOPS(每秒输入/输出操作次数)方面的表现。none模式表现出最佳的IOPS性能,这意味着采用I/O调度器并未带来预期的性能提升,反而可能降低了系统的吞吐能力。对于中位数延迟和尾部延迟等其他性能指标,研究也得出了相似的趋势。
同时,通过测量完成100万次I/O操作时系统总能耗,结果显示无调度器none同样在能效方面具有优势或与其它调度器相当。在许多情况下,相比bfq调度器,无调度器none模式能够在每百万次I/O操作上节省大约200焦耳的能量消耗。这是因为无调度器可以更快地完成相同的工作负载,而非直接导致硬件执行阶段功耗降低,从而允许系统更早进入空闲状态,并有可能提前切换到更低功率的状态。
此外,研究还考虑了混合请求大小(4 KB和8 KB)、不同的I/O接口及读写比例的变化情况,但无论何种配置下,I/O调度器都没有为性能或能源效率提供任何明显益处。总的来说,基于Intel Optane SSD的实验数据表明,I/O调度器在ULL存储设备上的应用实际上削弱了系统性能并降低了能源效率。尽管如此,操作系统确保应用程序公平访问硬件资源的角色仍然重要,因此未来的研究需要进一步探讨I/O调度器在ULL存储环境中如何实现公平性以及其他技术如闪存基ULL SSD上的价值。
宏观基准测试则更侧重于实际应用环境中的表现。研究人员选择了RocksDB这一广泛使用的键值存储数据库作为真实应用场景,它特别适合模拟超低延迟环境下键值查找操作的优化,因此更能体现I/O调度器对ULL设备性能的影响。利用db_bench工具生成宏观基准测试数据,首先创建了一个接近饱和容量的RocksDB数据库,然后执行readrandom工作负载模拟大量数据库查询请求过程。除了记录数据库负载强度,研究者还通过Linux内核提供的`/proc/diskstats`接口精确测量来自设备层面的I/O请求数量和带宽,并结合Onset HOBO UX120-018 Data Logger监控整个实验过程中系统的能耗,以探究I/O调度器对系统能效的影响。
研究者使用RocksDB键值存储作为宏观基准工具,进一步验证了I/O调度器对超低延迟(ULL)存储设备性能和能耗的影响。具体来说,他们运用db_bench工具生成随机读取键值查找的工作负载,并记录不同I/O深度下的性能表现(以IOPS衡量)以及能量消耗(每百万次IO操作的焦耳数)。结果显示,在各种不同的I/O强度条件下,无论是在读取、写入还是混合(50-50%读写比)场景下,无调度器none模式表现出最优的性能(即最高的IOPS),优于其他三种调度器mq-deadline、kyber和bfq的表现。
总的来说,研究团队通过实验证明,在现今超低延迟存储时代,传统的I/O调度策略不仅没有为性能优化带来帮助,反而增加了延迟并影响到吞吐率及能源效率。这提示我们,对于超低延迟存储设备,应当重新评估I/O调度器的作用,并根据具体应用场景和技术特性来决定是否继续使用它们以改善性能和能效。
小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!
精彩推荐: