undefined

pidstat

在 sysstat 包中,pidstat 用于监控进程占用系统资源的情况。注意:pidstat 监控的是进程的指标,如果要看线程,加上 -t 选项
工具使用:

1
2
3
4
5
6
[root@localhost ~]# pidstat -help
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ] [ -u ]
[ -V ] [ -w ] [ -C <command> ] [ -p { <pid> [,...] | SELF | ALL } ]
[ -T { TASK | CHILD | ALL } ]
  • -u 默认的参数,显示各个进程的CPU使用情况
  • -r 显示各个进程的内存使用情况
  • -d 显示各个进程的IO使用情况
  • -p 指定进程号
  • -s 显示堆栈利用率
  • -w 显示每个进程的上下文切换情况
  • -l 显示命令名和所有参数
  • -t 输出线程的指标
  • interval 相邻两次采样的时间;count 采样次数

输出参数含义:

1. 查看各个进程的 CPU 使用情况

1
2
3
4
5
6
7
8
[root@localhost ~]# pidstat -u -l
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 01/13/2022 _x86_64_ (2 CPU)

07:55:39 AM UID PID %usr %system %guest %CPU CPU Command
07:55:39 AM 0 1 0.01 0.01 0.00 0.02 1 /usr/lib/systemd/systemd --system --deserialize 18
07:55:39 AM 0 6 0.00 0.01 0.00 0.01 0 ksoftirqd/0
07:55:39 AM 0 7 0.00 0.00 0.00 0.00 0 migration/0
...
  • %usr 进程在用户空间占用的 CPU 的百分比
  • %system 进程在内核空间占用的 CPU 的百分比
  • %guest 进程在虚拟机占用的百分比
  • %CPU 进程占用CPU的百分比

2. 查看各个进程的内存使用情况

1
2
3
4
5
6
7
[root@localhost ~]# pidstat -r -l
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 01/13/2022 _x86_64_ (2 CPU)

08:02:21 AM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:02:21 AM 0 1 2.45 0.00 46204 6620 0.36 /usr/lib/systemd/systemd --system --deserialize 18
08:02:21 AM 0 493 1.44 0.00 39056 5104 0.27 /usr/lib/systemd/systemd-journald
08:02:21 AM 0 647 0.02 0.00 55532 856 0.05 /sbin/auditd
  • minflt/s 任务每秒发生的次要错误,不需要从磁盘中加载页
  • majflt/s 任务每秒发生的主要错误,需要从磁盘
  • VSZ 虚拟内存大小,单位(KB)
  • RSS 物理内存大小,单位(KB)

3. 查看各个进程的 IO 使用情况

1
2
3
4
5
6
7
[root@localhost ~]# pidstat -d -l
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 01/13/2022 _x86_64_ (2 CPU)

09:14:11 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
09:14:11 AM 0 1 13.62 118.62 14.43 /usr/lib/systemd/systemd --system --deserialize 18
09:14:11 AM 0 47 0.00 0.00 0.00 kworker/u256:1
09:14:11 AM 0 412 0.00 0.00 0.00 xfsaild/dm-0
  • KB_rd/s 每秒进程从磁盘读取的数据量,单位(KB)
  • KB_wr/s 每秒进程从磁盘写的数据量,单位(KB)

4. 查看各个进程的上下文切换情况

1
2
3
4
5
6
7
[root@localhost ~]# pidstat -w -l
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 01/13/2022 _x86_64_ (2 CPU)

09:25:14 AM UID PID cswch/s nvcswch/s Command
09:25:14 AM 0 1 0.15 0.14 /usr/lib/systemd/systemd --system --deserialize 18
09:25:14 AM 0 2 0.01 0.00 kthreadd
09:25:14 AM 0 4 0.00 0.00 kworker/0:0H
  • cswch/s 每秒执行任务的自愿性上下文切换的总次数;比如任务需要等待资源阻塞时,会发生自愿上下文切换
  • nvcswch/s 每秒执行任务的非自愿性上下文切换的总次数;当任务在其时间片期间执行时,被迫放弃CPU,发生非自愿上下文切换;进程在争抢CPU,被强制调度