linux 命令使用4--pidstat(CPU)
pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
命令格式:
pidstat [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ username ] ] [ -u ] [ -V ] [ -w ] [ -C comm ] [ -p { pid [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ] [ interval [ count ] ]
option:
- -C:仅显示命令名包含字符串comm的任务。此字符串可以是正则表达式
- -u:默认的参数,显示各个进程的cpu使用统计
- -r:显示各个进程的内存使用统计
- -d:显示各个进程的IO使用情况
- -p:指定进程号
- -s:显示堆栈利用率
- -w:显示每个进程的上下文切换情况
- -t:显示选择任务的线程的统计信息外的额外信息
- -T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。- -V:版本号
- -h:在一行上显示了所有活动,这样其他程序可以容易解析。
- -I:在SMP环境,表示任务的CPU使用率/内核数量
- -l:显示命令名和所有参数
pidstat CPU各字段含义:
显示cpu,间隔2秒。显示2次
qiteck@logic:~$ pidstat 2 2
Linux 5.15.0-50-generic (logic) 12/16/2022 _x86_64_ (2 CPU)
08:32:36 AM UID PID %usr %system %guest %wait %CPU CPU Command
08:32:38 AM 0 704 0.50 0.50 0.00 0.00 1.00 1 containerd
08:32:38 AM 0 1160 1.00 1.49 0.00 0.00 2.49 1 kubelet
08:32:38 AM 0 1243 1.00 0.00 0.00 0.00 1.00 0 containerd-shim
08:32:38 AM 0 1290 0.50 0.00 0.00 0.00 0.50 0 containerd-shim
08:32:38 AM 0 1546 0.50 0.50 0.00 0.00 1.00 0 kube-controller
08:32:38 AM 0 4363 1.49 0.50 0.00 1.00 1.99 1 etcd
08:32:38 AM 0 4415 4.98 0.50 0.00 0.00 5.47 1 kube-apiserver
08:32:38 AM 0 5690 0.50 0.00 0.00 0.00 0.50 1 coredns
08:32:38 AM UID PID %usr %system %guest %wait %CPU CPU Command
08:32:40 AM 0 1160 0.50 0.50 0.00 0.00 1.00 1 kubelet
08:32:40 AM 0 1546 0.00 0.50 0.00 0.00 0.50 0 kube-controller
08:32:40 AM 0 1568 0.00 0.50 0.00 0.00 0.50 0 kube-scheduler
08:32:40 AM 0 4363 1.00 0.50 0.00 0.00 1.50 0 etcd
08:32:40 AM 0 4415 1.50 1.00 0.00 0.00 2.50 1 kube-apiserver
08:32:40 AM 0 2545826 0.00 0.50 0.00 0.00 0.50 0 systemd-journal
08:32:40 AM 1000 2653835 0.00 0.50 0.00 0.00 0.50 0 pidstat
- PID:进程ID
- %usr:进程在用户空间占用cpu的百分比
- %system:进程在内核空间占用cpu的百分比
- %guest:进程在虚拟机占用cpu的百分比
- %CPU:进程占用cpu的百分比
- CPU:处理进程的cpu编号
- Command:当前进程对应的命令
pidstat -r (内存使用情况统计)各字段含义:
显示内存,间隔2秒。显示2次
qiteck@logic:~$ pidstat -r 2 2
Linux 5.15.0-50-generic (logic) 12/16/2022 _x86_64_ (2 CPU)
08:34:47 AM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:34:49 AM 0 1243 9.00 0.00 712400 9880 0.12 containerd-shim
08:34:49 AM 0 1290 9.00 0.00 712400 10012 0.12 containerd-shim
08:34:49 AM 0 1326 8.00 0.00 712656 9796 0.12 containerd-shim
08:34:49 AM 0 1371 9.00 0.00 712656 9916 0.12 containerd-shim
08:34:49 AM 0 4518 9.00 0.00 712656 9256 0.11 containerd-shim
08:34:49 AM 0 4826 11.00 0.00 712656 10512 0.13 containerd-shim
08:34:49 AM 0 5473 6.00 0.00 712656 9760 0.12 containerd-shim
08:34:49 AM 0 5630 8.00 0.00 712656 10472 0.13 containerd-shim
08:34:49 AM 1000 2654007 1.50 0.00 6988 3260 0.04 pidstat
08:34:49 AM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:34:51 AM 1000 2654007 0.50 0.00 6988 3260 0.04 pidstat
Average: UID PID minflt/s majflt/s VSZ RSS %MEM Command
Average: 0 1243 4.50 0.00 712400 9880 0.12 containerd-shim
Average: 0 1290 4.50 0.00 712400 10012 0.12 containerd-shim
Average: 0 1326 4.00 0.00 712656 9796 0.12 containerd-shim
Average: 0 1371 4.50 0.00 712656 9916 0.12 containerd-shim
Average: 0 4518 4.50 0.00 712656 9256 0.11 containerd-shim
Average: 0 4826 5.50 0.00 712656 10512 0.13 containerd-shim
Average: 0 5473 3.00 0.00 712656 9760 0.12 containerd-shim
Average: 0 5630 4.00 0.00 712656 10472 0.13 containerd-shim
Average: 1000 2654007 1.00 0.00 6988 3260 0.04 pidstat
- PID:进程标识符
- Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
- Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
- VSZ:虚拟地址大小,虚拟内存的使用KB
- RSS:常驻集合大小,非交换区五里内存使用KB
- Command:task命令名
pidstat -d( 显示各个进程的IO使用情况)各字段含义:
qiteck@logic:~$ pidstat -d
Linux 5.15.0-50-generic (logic) 12/16/2022 _x86_64_ (2 CPU)
08:36:27 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
08:36:27 AM 1000 1894 0.00 0.00 0.00 0 systemd
08:36:27 AM 1000 1901 0.00 0.00 0.00 0 bash
08:36:27 AM 1000 2648960 0.00 0.00 0.00 0 bash
08:36:27 AM 1000 2650628 0.00 0.00 0.00 0 man
报告IO统计显示以下信息:
- PID:进程id
- kB_rd/s:每秒从磁盘读取的KB
- kB_wr/s:每秒写入磁盘KB
- kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
- COMMAND:task的命令名
pidstat -s(显示各个进程的堆栈利用率)各字段含义:
qiteck@logic:~$ pidstat -s
Linux 5.15.0-50-generic (logic) 12/16/2022 _x86_64_ (2 CPU)
08:37:43 AM UID PID StkSize StkRef Command
08:37:43 AM 1000 1894 132 20 systemd
08:37:43 AM 1000 1901 132 56 bash
08:37:43 AM 1000 2648960 132 108 bash
08:37:43 AM 1000 2650628 132 20 man
08:37:43 AM 1000 2650636 132 112 pager
08:37:43 AM 1000 2651182 132 24 man
08:37:43 AM 1000 2651190 132 108 pager
08:37:43 AM 1000 2654243 132 16 pidstat
- UID:正在监视的任务的实际用户标识号
- USER:拥有被监视任务的真实用户的名称
- PID:进程标识符
- StkSize:作为堆栈为任务保留但不一定使用的内存量(KB)。
- StkRef:任务引用的用作堆栈的内存量(KB)。
- Command:task命令名
pidstat -w(显示每个进程的上下文切换情况)各字段含义:
显示上下文切换,间隔2秒。显示2次
qiteck@logic:~$ pidstat -w 2 2
Linux 5.15.0-50-generic (logic) 12/16/2022 _x86_64_ (2 CPU)
08:38:47 AM UID PID cswch/s nvcswch/s Command
08:38:49 AM 0 9 4.98 0.00 kworker/0:1H-kblockd
08:38:49 AM 0 13 2.99 0.00 ksoftirqd/0
08:38:49 AM 0 14 20.90 0.00 rcu_sched
08:38:49 AM 0 15 0.50 0.00 migration/0
08:38:49 AM 0 21 0.50 0.00 migration/1
08:38:49 AM UID PID cswch/s nvcswch/s Command
08:38:51 AM 0 9 8.00 0.00 kworker/0:1H-kblockd
08:38:51 AM 0 13 1.00 0.00 ksoftirqd/0
08:38:51 AM 0 14 19.50 0.00 rcu_sched
08:38:51 AM 0 22 5.00 0.50 ksoftirqd/1
- PID:进程id
- UID:正在监视的任务的实际用户标识号
- USER:拥有被监视任务的真实用户的名称
- Cswch/s:每秒执行任务的自愿性上下文切换的总数。当任务因需要不可用的资源而阻塞时,会发生自愿上下文切换。
- Nvcswch/s:每秒执行任务的非自愿上下文切换的总数。当任务在其时间片期间执行,然后被迫放弃处理器时,会发生非自愿上下文切换
- Command:命令名
应用实例:
# 每隔两秒显示系统中每个进程的五个CPU统计报告
pidstat 2 5
# 以两秒钟的间隔显示五个关于PID 1643内存统计信息的报告
pidstat -r -p 1643 2 5
# 显示命令名称包含字符串“ fox”或“ bird”的所有进程的内存统计信息。
pidstat -C "fox|bird" -r -p ALL
# 对于系统中所有任务的子进程,每隔两秒显示五个页面错误统计信息报告。 仅显示具有非零统计值的子进程
pidstat -T CHILD -r 2 5

浙公网安备 33010602011771号