sysstat(5)pidstat命令

pidstat命令介绍

pidstat 是 Linux 系统下的一种性能监控工具,属于 sysstat 软件包。它主要用于监控系统中各个进程的 CPU、内存、I/O 等资源使用情况。与 topps 不同,pidstat 提供了更详细的统计信息,并且可以按时间间隔持续输出,便于分析进程的性能表现。它常用于排查系统瓶颈或特定进程的资源占用问题

使用方法

安装 sysstat 包后(例如在 Ubuntu 上使用 sudo apt install sysstat),即可使用 pidstat 命令。基本语法如下:

pidstat [选项] [时间间隔] [次数]
  • 时间间隔:以秒为单位,指定采样频率。
  • 次数:指定采集的次数,默认无限次(直到手动停止,例如按 Ctrl+C)。

常用选项

  • -u:显示 CPU 使用情况(默认选项,显示各个进程cpu使用情况)。
  • -r:显示内存使用情况。
  • -d:显示磁盘 I/O 统计信息。
  • -w:显示任务切换(上下文切换)统计。
  • -p <PID>:指定特定进程的 PID 来监控。(ALL 所有进程pid降序排列)
  • -p ALL:监控所有进程。
  • -t:显示线程级别的统计信息。
  • -l:显示完整的命令行路径和参数。

示例

  1. 监控所有进程的 CPU 使用,每 2 秒刷新一次,持续 5 次:
    pidstat -u 2 5

  2. 监控特定进程的 CPU 和内存使用:
    pidstat -ur -p 1234 2

  3. 查看所有进程的 I/O 统计:
    pidstat -d 1

  4. 显示线程级别的统计信息:
    pidstat -t 2

c868850633e30c7082f5a510d0728ce6.png

5.组合命令

1
2
3
pidstat -u -p ALL  # 所有进程cpu使用情况
pidstat -r -p ALL # 所有进程mem使用情况

结果字段解释

pidstat 的输出字段因选项不同而异,以下是常见选项下的字段含义:

1. -u(CPU 使用统计)

UID       PID    %usr %system  %guest   %CPU   CPU  Command
  • UID:进程所属用户的 ID。
  • PID:进程 ID。
  • %usr:进程在用户态使用的 CPU 百分比。
  • %system:进程在内核态使用的 CPU 百分比。
  • %guest:进程在虚拟机中使用的 CPU 百分比(适用于虚拟化环境)。
  • %CPU:进程总的 CPU 使用百分比(用户态 + 内核态)。
  • CPU:进程运行所在的 CPU 核心编号
  • Command:启动进程的命令名称。

2. -r(内存使用统计)

UID       PID    %mem   minflt/s  majflt/s     VSZ    RSS   Command
  • %mem:进程占用的内存百分比。
  • minflt/s:每秒次缺页错误(minor faults),无需从磁盘加载页面。
  • majflt/s:每秒主缺页错误(major faults),需要从磁盘加载页面。
  • VSZ:虚拟内存大小(KB)。
  • RSS:实际使用的物理内存(Resident Set Size,KB)。
  • Command:进程的命令名称。

3. -d(磁盘 I/O 统计)

UID       PID    kB_rd/s   kB_wr/s  kB_ccwr/s  Command
  • kB_rd/s:每秒从磁盘读取的数据量(KB)。
  • kB_wr/s:每秒写入磁盘的数据量(KB)。
  • kB_ccwr/s:每秒被取消的写操作数据量(KB,通常与文件系统缓存相关)。
  • Command:进程的命令名称。

4. -w(任务切换统计)

UID       PID    cswch/s  nvcswch/s  Command
  • cswch/s:每秒上下文切换次数(voluntary,进程主动放弃 CPU,例如等待 I/O)。
  • nvcswch/s:每秒非自愿上下文切换次数(non-voluntary,例如时间片用尽)。
  • Command:进程的命令名称。

注意事项

  • 如果未指定选项,默认显示 CPU 使用情况(-u)。
  • 输出中第一行通常是系统启动以来的平均值,后续行是指定时间间隔内的统计。
  • 使用 -p SELF 可以监控 pidstat 自身的资源使用。