要实时获取SSD每秒输入输出操作数(IOPS),需用iostat -d -x 1查看r/s与w/s之和;用iotop或pidstat定位高IOPS进程;用fio模拟4K随机读写压测验证标称IOPS。

当你发现系统磁盘响应变慢、程序读写卡顿、或者想确认SSD是否跑满IOPS时,需要在终端中直接获取每秒输入输出操作数(IOPS)的实时数值,而不是只看吞吐量或队列长度。
用iostat查设备级IOPS
第一步:打开终端(Ctrl + Alt + T)。
第二步:执行命令安装基础工具(若未预装):sudo apt install sysstat。
第三步:运行命令获取每秒读写I/O次数:iostat -d -x 1。该命令每秒刷新一次,-x启用扩展统计,能直接显示r/s(每秒读操作数)和w/s(每秒写操作数),二者相加即为该设备当前总IOPS。
【注意:务必使用 -x 参数,否则默认输出不包含 r/s 和 w/s 字段】
第四步:观察输出中“r/s”和“w/s”两列——例如某NVMe盘显示 r/s=1240.5、w/s=893.2,则当前IOPS约为2134;若值持续超过设备标称随机IOPS(如消费级SSD标称50K IOPS),说明已逼近上限。
用iotop定位高IOPS进程
仅知道设备总IOPS还不够,必须锁定是哪个进程在疯狂发起小包随机IO。
方法一:安装并运行实时进程级监控
执行 sudo apt install iotop → 运行 sudo iotop -o -b -n 1(-o只显示活跃IO进程,-b批处理模式,-n 1仅采集1次)。输出中“I/O”列百分比高、且“READ/WRITE”速率波动剧烈的小文件操作进程,往往就是IOPS大户。
方法二:结合pidstat做精准采样
执行 sudo pidstat -d 1,它会按进程列出每秒读写字节数(kB_rd/s、kB_wr/s)和实际I/O次数(#r/s、#w/s)。【关键点:#r/s 和 #w/s 才是进程真实发起的IOPS,不是吞吐量换算值】
用fio模拟压测验证理论IOPS
如果你要验证磁盘标称随机IOPS是否真实可达,不能依赖空闲状态下的观测值,必须主动施加压力。
第一步:安装fio(统信UOS官方源已内置):sudo apt install fio。
第二步:对/dev/sda执行4K随机读IOPS测试:fio -name=randread -ioengine=libaio -direct=1 -bs=4k -rw=randread -size=2G -runtime=30 -time_based -group_reporting -numjobs=4 -iodepth=128。
第三步:查看输出末尾的“iops=”字段——例如显示 iops=98765,即该配置下实测随机读IOPS为9.8万。
注意:测试前确保目标设备无重要数据,-direct=1绕过页缓存,-iodepth=128模拟高并发队列深度,这些参数直接影响IOPS结果。


















