属性值说明:
- PID:进程标识符
- Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
- Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
- VSZ:虚拟地址大小,虚拟内存的使用KB
- RSS:常驻集合大小,非交换区内存的使用KB
- Command:task命令名
也可以直接pidstat -r,是全部进程的内存使用情况!
示例:显示各个进程IO的使用情况
pidstat -d Linux 3.10.0-957.el7.x86_64 (VM-75-65) 04/24/2020 _x86_64_ (4 CPU) 02:25:35 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 02:25:35 PM 0 1 6.42 242.84 0.72 systemd 02:25:35 PM 0 2432 0.00 0.00 0.00 xfsaild/sda3 02:25:35 PM 0 2501 0.00 0.00 0.00 systemd-journal 02:25:35 PM 0 2522 0.00 0.00 0.00 lvmetad 02:25:35 PM 0 2539 0.35 0.00 0.00 systemd-udevd 02:25:35 PM 0 4863 0.00 0.17 0.00 auditd 02:25:35 PM 32 4893 0.00 0.00 0.00 rpcbind 02:25:35 PM 0 4894 0.00 0.00 0.00 smartd 02:25:35 PM 0 4896 0.00 0.00 0.00 irqbalance 复制代码
属性值说明:
- PID:进程ID
- kB_rd/s:每秒从磁盘读取的KB
- kB_wr/s:每秒写入磁盘KB
- kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
- COMMAND:task的命令名
示例:进程的上下文切换情况
pidstat -w Linux 3.10.0-957.el7.x86_64 (VM-75-65) 04/24/2020 _x86_64_ (4 CPU) 02:26:50 PM UID PID cswch/s nvcswch/s Command 02:26:50 PM 0 1 0.36 0.00 systemd 02:26:50 PM 0 2 0.01 0.00 kthreadd 02:26:50 PM 0 3 10.42 0.00 ksoftirqd/0 02:26:50 PM 0 5 0.00 0.00 kworker/0:0H 02:26:50 PM 0 7 1.77 0.00 migration/0 02:26:50 PM 0 8 0.00 0.00 rcu_bh 02:26:50 PM 0 9 114.23 0.00 rcu_sched 02:26:50 PM 0 10 0.00 0.00 lru-add-drain 02:26:50 PM 0 11 0.25 0.00 watchdog/0 02:26:50 PM 0 12 0.25 0.00 watchdog/1 复制代码
属性值说明:
- PID:进程ID
- cswch/s:每秒主动任务上下文切换数量
- nvcswch/s:每秒被动任务上下文切换数量
- Command:命令名
示例:显示特定进程的线程统计情况
pidstat -p 12920 -t Linux 2.6.32-573.el6.x86_64 (VM-75-64) 04/24/2020 _x86_64_ (8 CPU) 02:20:23 PM TGID TID %usr %system %guest %CPU CPU Command 02:20:23 PM 12920 - 0.00 0.00 0.00 0.00 3 java 02:20:23 PM - 12920 0.00 0.00 0.00 0.00 3 |__java 02:20:23 PM - 12922 0.00 0.00 0.00 0.00 6 |__java 02:20:23 PM - 12923 0.00 0.00 0.00 0.00 0 |__java 02:20:23 PM - 12924 0.00 0.00 0.00 0.00 0 |__java 02:20:23 PM - 12925 0.00 0.00 0.00 0.00 2 |__java 02:20:23 PM - 12926 0.00 0.00 0.00 0.00 5 |__java 02:20:23 PM - 12927 0.00 0.00 0.00 0.00 4 |__java 02:20:23 PM - 12928 0.00 0.00 0.00 0.00 1 |__java 02:20:23 PM - 12930 0.00 0.00 0.00 0.00 5 |__java 02:20:23 PM - 12931 0.00 0.00 0.00 0.00 5 |__java 02:20:23 PM - 12932 0.00 0.00 0.00 0.00 3 |__java 02:20:23 PM - 12933 0.00 0.00 0.00 0.00 4 |__java 02:20:23 PM - 12934 0.00 0.00 0.00 0.00 4 |__java 02:20:23 PM - 12935 0.00 0.00 0.00 0.00 5 |__java 02:20:23 PM - 12936 0.00 0.00 0.00 0.00 3 |__java 02:20:23 PM - 12938 0.00 0.00 0.00 0.00 5 |__java 02:20:23 PM - 12939 0.00 0.00 0.00 0.00 1 |__java 02:20:23 PM - 12940 0.00 0.00 0.00 0.00 6 |__java 02:20:23 PM - 12941 0.00 0.00 0.00 0.00 2 |__java 02:20:23 PM - 12943 0.00 0.00 0.00 0.00 6 |__java 复制代码
属性值说明:
- TGID:主线程的表示
- TID:线程id
- %usr:进程在用户空间占用cpu的百分比
- %system:进程在内核空间占用cpu的百分比
- %guest:进程在虚拟机占用cpu的百分比
- %CPU:进程占用cpu的百分比
- CPU:处理进程的cpu编号
- Command:当前进程对应的命令
iotop
iotop是一个用来监视磁盘I/O使用状况的 top 类工具,可监测到哪一个程序使用的磁盘IO的信息。
命令参数说明:
- -o, --only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
- -b, --batch非交互模式,一般用来记录日志。
- -n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。
- -d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。
- -p PID, --pid=PID指定监测的进程/线程。
- -u USER, --user=USER指定监测某个用户产生的I/O。
- -P, --processes仅显示进程,默认iotop显示所有线程。
- -a, --accumulated显示累积的I/O,而不是带宽。
- -k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。
- -t, --time 加上时间戳,非交互非模式。
- -q, --quiet 禁止头几行,非交互模式。有三种指定方式,其中,-q表示只在第一次监测时显示列名,-qq表示永远不显示列名,-qqq表示永远不显示I/O汇总。
交互按键:
和top命令类似,iotop也支持以下几个交互按键。
- left和right方向键:改变排序。
- r:反向排序。
- o:切换至选项--only。
- p:切换至--processes选项。
- a:切换至--accumulated选项。
- q:退出。
- i:改变线程的优先级。
只显示正在产生I/O的进程或线程(交互式)
除了传参,可以在运行过程中按o生效。
iotop -o 复制代码
按时间间隔刷新(交互式)
每间隔2秒,输出5次。
iotop -d 2 -n 5 复制代码
按时间间隔刷新,输出到屏幕(非交互式)
每间隔2秒,输出5次。也可输出到日志文本,用于监控某时间段的io信息.
iotop -botq -n 5 -d 2 复制代码
输出PID为8382的进程的磁盘IO信息(非交互式)
iotop -botq -p 8382