FIO(Flexible I/O Tester)是一个开源的I/O压力测试工具,主要用于测试磁盘、文件系统、块设备和网络设备的性能。它能够模拟各种I/O负载,包括顺序读写、随机读写、混合读写等,适用于各种存储设备的性能测试12。
功能特点
- 灵活的I/O负载模拟:FIO能够模拟多种I/O负载,包括顺序读写、随机读写、混合读写等,适用于各种存储设备的性能测试2。
- 多线程和多进程支持:FIO可以生成多个线程或进程来执行I/O操作,每个线程或进程可以独立配置,以模拟复杂的I/O场景2。
- 多种I/O引擎支持:FIO支持多种I/O引擎,如libaio、posixaio、sync等,用户可以根据需求选择合适的引擎23。
- 详细的性能报告:FIO能够生成详细的性能报告,包括带宽、IOPS、延迟等关键性能指标,帮助用户全面了解存储设备的性能表现2。
指标
主要性能指标
每秒的IO数量。体现存储系统性能的最主要指标。现在主流的IOPS都在90K以上了(机械硬盘还在5K左右徘徊),比如模拟<4K>大小的文件读写。每秒最高能读或写90000个<4K>的文件;如果增加磁盘,则每秒IO数量就可以变多。比如增加相同的一块盘则IOPS就可以翻倍。
带宽(吞吐量)
每秒钟最大吞吐数据量的大小。每秒传输多大的数据比如500M/s。iops
和带宽是正相关,因为知道每秒IO数量,和平均每个IO的大小则可以算出整体每秒数据量大小也就是带宽。IOPS * I/O size = Bandwidth。
大文件持续传输型的应用需要的是充分的带宽性能,而小文件随机读写的应用则要求足够的I/O能力。在存储领域有个不成文的规定,只要以IOPS来描述,那么就一般代表是小I/O(<32KB),以Bandwidth来描述,那就是大I/O(>32KB)。
延迟
是指完成一次IO请求所需的时间。延迟是关注存储性能时最重要的单个指标。
我们从发出请求到存储层的那一刻开始测量,并在获取请求的数据或确认数据已存储在磁盘上时停止测量。数据得到响应前需要等待的时间。
他和IOPS的区别:比如说我一个主机挂了一块SSD和100块HDD,SSD速度快其实就是延迟低,就是说我发送一条请求可以比HDD更快的返回。但是这里100块HDD的IOPS要高于SSD,因为他每秒能处理的IO要更多。