许吉友 - 运维

pidstat 命令详解

常用参数:

-u:默认的参数,显示各个进程的cpu使用统计

-r:显示各个进程的内存使用统计

-d:显示各个进程的IO使用情况

-p:指定进程号

-w:显示每个进程的上下文切换情况

-t:显示选择任务的线程的统计信息外的额外信息

-T { TASK | CHILD | ALL } 这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。 注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

-V:版本号

-h:在一行上显示了所有活动,这样其他程序可以容易解析。

-I:在SMP环境,表示任务的CPU使用率/内核数量

-l:显示命令名和所有参数

显示某个进程的 CPU 统计信息:

$ pidstat -p 1594
Linux 4.18.0-193.6.3.el8_2.x86_64 (test-kubenode-1)     12/10/2020      _x86_64_        (24 CPU)

02:40:14 PM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
02:40:14 PM   167      1594    0.66    0.30    0.00    0.00    0.95     2  ceph-mon

统计内存使用情况:

$ pidstat -r -p 1594
Linux 4.18.0-193.6.3.el8_2.x86_64 (test-kubenode-1)     12/10/2020      _x86_64_        (24 CPU)

02:44:34 PM   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
02:44:34 PM   167      1594     34.18      0.00 1880828 1090612   0.83  ceph-mon

Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页

Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页

VSZ:虚拟地址大小,虚拟内存的使用KB

RSS:常驻集合大小,非交换区的内存使用KB

Command:task命令名

显示IO使用情况:

$ pidstat -d -p 1594
Linux 4.18.0-193.6.3.el8_2.x86_64 (test-kubenode-1)     12/10/2020      _x86_64_        (24 CPU)

02:45:58 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
02:45:58 PM   167      1594     -1.00     -1.00     -1.00      23  ceph-mon

显示上下文切换情况:

$ pidstat -w -p 1594
Linux 4.18.0-193.6.3.el8_2.x86_64 (test-kubenode-1)     12/10/2020      _x86_64_        (24 CPU)

02:48:03 PM   UID       PID   cswch/s nvcswch/s  Command
02:48:03 PM   167      1594      0.00      0.00  ceph-mon

显示选择任务的线程的统计信息外的额外信息

$ pidstat -t -p 1594
Linux 4.18.0-193.6.3.el8_2.x86_64 (test-kubenode-1)     12/10/2020      _x86_64_        (24 CPU)

02:47:45 PM   UID      TGID       TID    %usr %system  %guest   %wait    %CPU   CPU  Command
02:47:45 PM   167      1594         -    0.66    0.30    0.00    0.00    0.95     2  ceph-mon
02:47:45 PM   167         -      1594    0.00    0.00    0.00    0.00    0.00     2  |__ceph-mon
02:47:45 PM   167         -      1615    0.01    0.02    0.00    0.00    0.03    14  |__log
02:47:45 PM   167         -      1617    0.00    0.00    0.00    0.00    0.00    14  |__service
02:47:45 PM   167         -      1618    0.00    0.00    0.00    0.00    0.00     2  |__admin_socket
02:47:45 PM   167         -      1621    0.00    0.00    0.00    0.00    0.00     4  |__signal_handler
02:47:45 PM   167         -      1632    0.04    0.08    0.00    0.00    0.11     3  |__rocksdb:low0
02:47:45 PM   167         -      1633    0.00    0.00    0.00    0.00    0.01    17  |__rocksdb:high0
02:47:45 PM   167         -      1634    0.00    0.00    0.00    0.00    0.00    12  |__ceph-mon
02:47:45 PM   167         -      1740    0.00    0.00    0.00    0.00    0.00    15  |__rocksdb:dump_st
02:47:45 PM   167         -      1741    0.00    0.00    0.00    0.00    0.00    16  |__rocksdb:pst_st
02:47:45 PM   167         -      1742    0.35    0.03    0.00    0.00    0.38     4  |__fn_monstore
02:47:45 PM   167         -      1743    0.04    0.04    0.00    0.00    0.08     5  |__msgr-worker-0
02:47:45 PM   167         -      1744    0.11    0.06    0.00    0.00    0.17    17  |__msgr-worker-1
02:47:45 PM   167         -      1745    0.00    0.00    0.00    0.00    0.00     7  |__msgr-worker-2
02:47:45 PM   167         -      1746    0.02    0.02    0.00    0.00    0.04     4  |__OpHistorySvc
02:47:45 PM   167         -      1752    0.00    0.00    0.00    0.00    0.00    13  |__fin
02:47:45 PM   167         -      1753    0.04    0.03    0.00    0.00    0.07     0  |__safe_timer
02:47:45 PM   167         -      1754    0.00    0.00    0.00    0.00    0.00     3  |__cpu_tp
02:47:45 PM   167         -      1755    0.00    0.00    0.00    0.00    0.00    20  |__cpu_tp
02:47:45 PM   167         -      1756    0.00    0.00    0.00    0.00    0.00    10  |__cpu_tp
02:47:45 PM   167         -      1757    0.00    0.00    0.00    0.00    0.00     0  |__cpu_tp
02:47:45 PM   167         -      1758    0.04    0.02    0.00    0.00    0.06     4  |__ms_dispatch
02:47:45 PM   167         -      1759    0.00    0.00    0.00    0.00    0.00    15  |__ms_local
02:47:45 PM   167         -      1760    0.00    0.00    0.00    0.00    0.00     2  |__safe_timer
02:47:45 PM   167         -      1761    0.00    0.00    0.00    0.00    0.00     4  |__ms_dispatch
02:47:45 PM   167         -      1762    0.00    0.00    0.00    0.00    0.00    16  |__ms_local
02:47:45 PM   167         -     18010    0.00    0.00    0.00    0.00    0.00    13  |__rstore_compact

TGID:主线程的表示

TID:线程id

%usr:进程在用户空间占用cpu的百分比

%system:进程在内核空间占用cpu的百分比

%guest:进程在虚拟机占用cpu的百分比

%CPU:进程占用cpu的百分比

CPU:处理进程的cpu编号