Linux性能监控之磁盘IO
使用iostat查看磁盘IO
rkB/s 每秒读取数据量kB
wkB/s 每秒写入数据量kB
svctm I/O请求的平均服务时间,单位毫秒
await I/O请求的平均等待时间,单位毫秒;值越小,性能越好;
util 一秒中有百分之几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘。
rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。
svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好。
如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘。
使用pidstat监控单个进程的IO
pidstat -d 2 -p 8989
iotop
iostat只能看到系统的I/O情况,那如何查看具体是哪个进程/线程在操作I/O呢?可以使用iotop工具监测。
iotop安装
iotop使用
输入iotop -oP,o表示只显示有IO的线程/进程,P表示只显示进程。如下,我们可以看到tomcat的进程在写日志文件。
iotop -oP
–version 查看版本
-h, --help 查看帮助
-o, --only 只显示有 IO 操作的进程或线程
-b, --batch 没有交互的模式,可以当成日志直接输出到文件记录用。
-n NUM, --iter=NUM 循环次数,在刷新了指定的次数后,程序就退出
-d SEC, --delay=SEC 刷新的频率,默认 1 秒一次
-p PID, --pid=PID 监视单个进程,默认监视所有。要监视多个,可以加多个 -p PID
-u USER, --user=USER 监视单个用户,默认监视所有。
-P, --processes 只显示进程,不显示线程。
-a, --accumulated 在 Disk Read 和 Disk Write 列显示的是从 iotop 启动开始,累计的数据量。
-k, --kilobytes 使用 KB 为单位。
-t, --time 在每一行加上时间戳
-q, --quiet 退出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?