当系统磁盘响应变慢、程序读写出现卡顿,或者你想确认SSD是否真的跑满了IOPS(每秒输入输出操作数)时,最直接的办法就是在终端里获取实时IOPS数值——而不是仅看吞吐量或队列长度。下面直接进入实操环节。
用iostat查看设备级IOPS
第一步,打开终端(快捷键Ctrl+Alt+T)。
第二步,如果系统中没有安装基础工具,执行:sudo apt install sysstat。
第三步,运行命令:iostat -d -x 1。该命令每秒刷新一次输出,-x参数会启用扩展统计,直接显示 r/s(每秒读取操作数)和 w/s(每秒写入操作数),两者相加即当前设备的总IOPS。
【注意:务必带上 -x 参数,否则默认输出里看不到 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表示仅采集一次数据。输出中“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测试结果。
