pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
使用方法
命令格式
pidstat [ 参数 ] [ <时间间隔> [ <次数> ] ]
参数列表
-u
默认的参数,显示各个进程的 CPU 使用统计-r
显示各个进程的内存使用统计-d
显示各个进程的 IO 使用情况-w
显示每个进程的上下文切换情况-p
指定进程号-h
在一行上显示了所有活动
示例
查看 cpu 使用情况
命令:
pidstat 或者 pidstat -u
输出:
05:47:02 PM UID PID %usr %system %guest %CPU CPU Command
05:47:02 PM 0 1 0.01 0.00 0.00 0.01 0 systemd
05:47:02 PM 0 2 0.00 0.00 0.00 0.00 1 kthreadd
05:47:02 PM 0 3 0.00 0.03 0.00 0.03 0 ksoftirqd/0
05:47:02 PM 0 7 0.00 0.12 0.00 0.12 1 rcu_sched
05:47:02 PM 0 9 0.00 0.01 0.00 0.01 0 migration/0
05:47:02 PM 0 10 0.00 0.00 0.00 0.00 0 watchdog/0
05:47:02 PM 0 11 0.00 0.00 0.00 0.00 1 watchdog/1
UID
运行进程的用户 IDPID
进程 ID%usr
进程在用户空间占用 CPU 的百分比%system
进程在内核空间占用 CPU 的百分比%guest
进程在虚拟机占用 CPU 的百分比%CPU
进程占用 CPU 的百分比CPU
处理进程的 CPU 编号Command
当前进程对应的命令
查看内存使用情况
命令:
pidstat -r
输出:
05:51:38 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
05:51:38 PM 0 1 0.02 0.00 38076 4760 0.03 systemd
05:51:38 PM 0 205 3.21 0.02 126680 63392 0.39 systemd-journal
05:51:38 PM 0 251 1.71 0.00 45536 1696 0.01 systemd-udevd
05:51:38 PM 104 538 0.00 0.00 256396 2028 0.01 rsyslogd
05:51:38 PM 0 544 0.26 0.01 1343920 63936 0.39 kubelet
05:51:38 PM 0 546 0.00 0.00 26044 32 0.00 atd
05:51:38 PM 106 559 0.00 0.00 42904 428 0.00 dbus-daemon
minflt/s
任务每秒发生的次要错误,不需要从磁盘中加载页majflt/s
任务每秒发生的主要错误,需要从磁盘中加载页VSZ
虚拟地址大小,虚拟内存的使用 KBRSS
常驻集合大小,非交换区五里内存使用 KB%MEM
进程占内存百分比
查看 IO 使用情况
命令:
pidstat -d
输出:
05:53:20 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
05:53:20 PM 0 1 4.33 28.88 0.02 1384 systemd
05:53:20 PM 0 2 0.00 0.00 0.00 11 kthreadd
05:53:20 PM 0 20 0.00 0.00 0.00 2 writeback
05:53:20 PM 0 34 0.00 0.01 0.00 442 kswapd0
05:53:20 PM 0 162 0.00 3.73 0.00 13168967 jbd2/vda1-8
05:53:20 PM 0 205 1.34 9.66 0.00 137417 systemd-journal
05:53:20 PM 0 251 0.00 0.00 0.00 59 systemd-udevd
kB_rd/s
每秒从磁盘读取的KBkB_wr/s
每秒写入磁盘KBkB_ccwr/s
任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。iodelay
阻塞 IO 延时的时钟数
查看上下文切换情况
命令:
pidstat -w
输出:
05:55:37 PM UID PID cswch/s nvcswch/s Command
05:55:37 PM 0 1 0.13 0.01 systemd
05:55:37 PM 0 2 0.00 0.00 kthreadd
05:55:37 PM 0 3 9.53 0.00 ksoftirqd/0
05:55:37 PM 0 5 0.00 0.00 kworker/0:0H
05:55:37 PM 0 7 143.27 0.00 rcu_sched
05:55:37 PM 0 8 0.00 0.00 rcu_bh
05:55:37 PM 0 9 2.05 0.00 migration/0
cswch/s
每秒主动任务上下文切换数量nvcswch/s
每秒被动任务上下文切换数量
同时查看多种指标
如果你想同时查看 CPU 和内存使用情况,如果你直接使用 pidstat -u -r
,这样同一个进程的 CPU 和内存信息会分开显示,如果想让它们显示在一样,你需要添加 -h
。
命令:
pidstat -u -r -h
输出:
Linux 4.4.0-105-generic (t1-app-002) 06/25/2019 _x86_64_ (2 CPU)
# Time UID PID %usr %system %guest %CPU CPU minflt/s majflt/s VSZ RSS %MEM Command
1561456840 0 1 0.01 0.00 0.00 0.01 0 0.02 0.00 38076 4760 0.03 systemd
1561456840 0 2 0.00 0.00 0.00 0.00 1 0.00 0.00 0 0 0.00 kthreadd
1561456840 0 3 0.00 0.03 0.00 0.03 0 0.00 0.00 0 0 0.00 ksoftirqd/0
1561456840 0 7 0.00 0.12 0.00 0.12 0 0.00 0.00 0 0 0.00 rcu_sched
1561456840 0 9 0.00 0.01 0.00 0.01 0 0.00 0.00 0 0 0.00 migration/0
1561456840 0 10 0.00 0.00 0.00 0.00 0 0.00 0.00 0 0 0.00 watchdog/0
1561456840 0 11 0.00 0.00 0.00 0.00 1 0.00 0.00 0 0 0.00 watchdog/1
本作品采用知识共享署名 4.0 国际许可协议进行许可,转载请注明原文链接
本文链接:https://schhx.github.io/2019/06/25/Linux命令之pidstat/
近期评论