常见的io监控工具包括iostat、iotop,这里从工具的安装、使用、优缺点进行分析,并给出目前缺少的监控工具
1 iostat
- 功能:用于报告CPU(中央处理器)统计信息和整个系统、适配器、tty设备、磁盘和CD-ROM的输入/输出统计信息;通过观察设备处于活动状态的时间(相对于其平均传输速率)来整理实时报告输出 ,主要用于监视nfs网络文件系统和本地文件系统。
- 参数详解:
- iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ]
- -c: 仅显示CPU统计信息.与-d选项互斥.
- -d:仅显示磁盘统计信息.与-c选项互斥.
- -k:以K为单位显示每秒的磁盘请求数,默认单位块.
- -m: 以M为单位显示每秒的磁盘请求数
- -p:device | ALL,与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:# iostat -p hda 或显示所有设备# iostat -p ALL
- -t : 在输出数据时,打印搜集数据的时间.
- -V: 打印版本号和帮助信息.
- -x : 输出扩展信息
- 输出
- 输出分为avg-cpu段和Device段
- 常用命令
- iostat -xm 1 : 每秒输出一次cpu&device信息
- iostat -c 1 2 : 每秒输出一次cpu信息,总共输出2次
- iostat -d 2 : 间隔2秒输出一次device信息
- iostat -xm 1 /dev/sdb : 每秒输出1次sdb的device信息和cpu信息
- iostat -p /dev/sdb -d 1 2 : 每秒输出一次sdb的分区的设备信息,总共输出2次
- 注意事项
- util代表磁盘使用率,对于hdd,使用率达到100%代表已经达到磁盘瓶颈,但对于ssd并不代表已经达到瓶颈,因为util是按照(svctm*(r/s+w/s))/1000,对于ssd因为有并发,所以达到100%只能说明单通道达到了100%
- 参考来源:(23条消息) 优化命令iostat详解_灌南第一帅的博客-CSDN博客_iostat命令详解参数
2 sar
- 功能:系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况,是UNIX系统使用者应该掌握的工具之一
- 参数详解:
- sar [options] [-A] [-o file] t [n]
- 在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项
-
-A:所有报告的总和。
-
-u:CPU利用率
-
-v:进程、I节点、文件和锁表状态。
-
-d:硬盘使用报告。
-
-r:没有使用的内存页面和硬盘块。
-
-g:串口I/O的情况。
-
-b:缓冲区使用情况。
-
-a:文件读写情况。
-
-c:系统调用情况。
-
-R:进程的活动情况。
-
-y:终端设备活动情况
-
-w:系统交换活动。
- -p: 打印出设备名称,不加输出的是设备节点,如dev8-0
- -n: 某个端口设备的网络状态
- sar -d -v -R
- 输出:
-
-
DEV: 网卡/EDEV: 网卡(错误)
- NFS/NFSD/SOCK/IP/EIP/ICMP/EICMP/TCP/ETCP/UDP/SOCK6/IP6/EIP6/ICMP6/EICMP6/UDP6
-
-
- 常用命令:
- sar -d 1 : 间隔1s输出一次设备情况
- sar -u 1 10 : 间隔1s输出一次cpu使用情况,总共输出10次
- sar -d -f /var/log/sa/sa03 -p|grep -E "DEV|sd" : 从文件sa03中过滤出磁盘信息(sa03代表3号,最多保存一个月的日志)
- sar -r 1 10 -o mem.log : 将内存信息每秒打印一次,总共打印10s,并将结果输出到mem.log中
- sar -v 1 3 : 监控目前系统中的资源使用情况
- 参考链接:
3 iotop
- 功能:一个类似 top 的工具,用来显示实时的磁盘活动。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况。iotop 监控 Linux 内核输出的 I/O 使用信息,并且显示一个系统中进程或线程的当前 I/O 使用情况。它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程花费的时间的百分比。它是一款开源、免费的用来监控磁盘I/O使用状况的类似top命令的工具,iotop可以监控进程的I/O信息。它是Python语言编写的,与iostat工具比较,iostat是系统级别的IO监控,而iotop是进程级别IO监控。
- 参数:
- -o:只显示有io操作的进程
- -b:批量显示,无交互,主要用作记录到文件。
- -n NUM:显示NUM次,主要用于非交互式模式。
- -d SEC:间隔SEC秒显示一次。
- -p PID:监控的进程pid。
- -u USER:监控的进程用户
- -P :只显示进程,不显示线程
- -a :显示累计的io(从iotop启动)
- -k : 以KB为单位显示
- -t : 非交互模式下,显示时间
- -q: 只在第一次监测时显示列名. 去除头部一些行:这个参数可以设置最多3次来移除头部行:-q列头部只在最初交互显示一次;-qq列头部不显示;-qqq,I/O的总结不显示
- 输出:
- 常用命令:
- iotop -o -P : 显示有io操作的进程
- 参考链接:
4 top
- 功能:监视进程和Linux整体性能的工具,所有用户可使用
- 参数:
- top [-] [d delay] [q] [c] [S] [s] [n]
-
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
-
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限则 top 将会以最高的优先序执行
-
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
-
S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
-
s : 安全模式,将交谈式指令取消, 避免潜在的危机
-
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-
n : 更新的次数,完成后将会退出 top
-
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
- 1 :交互界面中输入数字1,可查看每个cpu的情况
- b : 交互界面中输入字母b,可高亮显示当前运行进程
- 输出:
- 常用命令:
- top 然后在交互中输入i(仅活跃的进程),然后输入1(查看每个cpu的情况),然后输入b(高亮显示)
5 vm