实战

安装 + 启用

sudo apt-get install sysstat
sudo service sysstat start

pidstat

这里是 windows 的 linux 发行版本。

$ pidstat
Linux 5.15.90.1-microsoft-standard-WSL2 (d)     11/14/23        _x86_64_        (16 CPU)

10:29:28      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
10:29:28        0         1    0.01    0.01    0.00    0.00    0.02    11  systemd
10:29:28        0        38    0.00    0.00    0.00    0.00    0.00     1  systemd-journal
10:29:28        0        62    0.00    0.00    0.00    0.00    0.00     4  systemd-udevd
10:29:28        0        75    0.01    0.00    0.00    0.00    0.01    10  snapfuse
10:29:28        0        79    0.02    0.00    0.00    0.00    0.03     4  snapfuse
10:29:28        0        82    0.01    0.00    0.00    0.00    0.01     7  snapfuse
10:29:28      101       121    0.00    0.00    0.00    0.00    0.00    12  systemd-resolve
10:29:28        0       131    0.00    0.00    0.00    0.00    0.00     2  cron
10:29:28      102       133    0.00    0.00    0.00    0.00    0.00    14  dbus-daemon
10:29:28        0       140    0.00    0.00    0.00    0.00    0.00     1  networkd-dispat
10:29:28      104       142    0.00    0.00    0.00    0.00    0.00    12  rsyslogd
10:29:28        0       143    0.05    0.02    0.00    0.00    0.08    13  snapd
10:29:28        0       151    0.00    0.00    0.00    0.00    0.00     2  systemd-logind
10:29:28        0       204    0.00    0.00    0.00    0.00    0.00     9  unattended-upgr
10:29:28        0       338    0.00    0.00    0.00    0.00    0.00     6  Relay(339)
10:29:28     1000       339    0.00    0.00    0.00    0.00    0.00    10  bash
10:29:28     1000       377    0.00    0.00    0.00    0.00    0.00    13  systemd
10:29:28     1000       407    0.00    0.00    0.00    0.00    0.00     4  bash
10:29:28        0       850    0.01    0.00    0.00    0.00    0.01     6  snapfuse
10:29:28        0      1031    0.01    0.00    0.00    0.00    0.01    14  snapfuse
10:29:28        0      1105    0.00    0.00    0.00    0.00    0.00     6  subiquity-serve
10:29:28        0      1127    0.06    0.01    0.00    0.00    0.07     1  python3.10
10:29:28        0      1131    0.06    0.03    0.00    0.00    0.08    11  python3
10:29:28     1000      1294    0.00    0.00    0.00    0.00    0.00     5  top
10:29:28     1000      1295    0.00    0.00    0.00    0.00    0.00    11  top
10:29:28        0      1700    0.00    0.00    0.00    0.00    0.00     5  packagekitd

解释一下下面的例子

解释一下,

10:29:28      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
10:29:28        0         1    0.01    0.01    0.00    0.00    0.02    11  systemd
10:29:28        0        38    0.00    0.00    0.00    0.00    0.00     1  systemd-journal
10:29:28        0        62    0.00    0.00    0.00    0.00    0.00     4  systemd-udevd

这是 pidstat 输出的一部分,提供了关于系统中几个进程的 CPU 使用情况和其他统计信息。

以下是对每列的解释:

  • 10:29:28:报告的时间点。

  • UID:用户标识符。

  • PID:进程标识符。

  • %usr:用户空间进程占用 CPU 百分比。

  • %system:内核空间进程占用 CPU 百分比。

  • %guest:虚拟 CPU 占用 CPU 百分比。

  • %wait:等待 CPU 的百分比。

  • %CPU:进程占用 CPU 百分比(相对于整个系统)。

  • CPU:进程所在的 CPU 编号。

  • Command:进程的命令行。

具体针对你提供的样本数据的解释:

  1. systemd 进程 (PID 1):
    • %usr%system 的值都很低,表示系统进程的用户空间和内核空间占用 CPU 的百分比都很小。
    • %guest%wait%CPU 的值也都很小,表示在此时点,systemd 进程的虚拟 CPU 占用、等待 CPU 的百分比和进程占用整个 CPU 的百分比都很小。
  2. systemd-journal 进程 (PID 38):
    • 对于这个进程,所有的 CPU 统计值都为 0,表示在此时点,该进程几乎没有占用 CPU 资源。
  3. systemd-udevd 进程 (PID 62):
    • 同样,对于这个进程,所有的 CPU 统计值都为 0,表示在此时点,该进程几乎没有占用 CPU 资源。

这个输出显示了特定时间点的几个系统进程的 CPU 使用情况,可以用于监视进程的活动以及评估系统的整体性能。

chat

Q1-详细介绍一下 linux pidstat 命令

pidstatsysstat 工具包的一部分,用于报告进程统计信息,包括 CPU 使用情况、内存使用情况和 I/O 活动等。

它可以提供有关特定进程以及整个系统中进程的性能信息。

命令格式:

pidstat [选项] [时间间隔] [次数] [-u] [-r] [-d] [-h] [-I] [-p <pid>]
  • 选项
    • -u:显示 CPU 使用情况。
    • -r:显示内存使用情况。
    • -d:显示磁盘 I/O 活动。
    • -h:以易读的格式显示数据。
    • -I:显示额外的统计信息。
    • -p <pid>:指定要监视的进程ID。
  • 时间间隔:指定输出统计信息的时间间隔。

  • 次数:指定输出统计信息的次数。

示例:

  1. 显示 CPU 使用情况
    pidstat -u 1 5
    

    上述命令每隔1秒输出一次 CPU 使用情况,共输出5次。

  2. 显示内存使用情况
    pidstat -r 1 5
    

    上述命令每隔1秒输出一次内存使用情况,共输出5次。

  3. 显示磁盘 I/O 活动
    pidstat -d 1 5
    

    上述命令每隔1秒输出一次磁盘 I/O 活动,共输出5次。

  4. 显示额外的统计信息
    pidstat -I 1 5
    

    上述命令每隔1秒输出一次额外的统计信息,共输出5次。

  5. 监视特定进程
    pidstat -u -p <pid> 1 5
    

    上述命令监视指定进程ID的 CPU 使用情况,每隔1秒输出一次,共输出5次。

输出解释:

pidstat 输出的信息包括:

  • Time:报告的时间点。

  • PID:进程ID。

  • %usr:用户空间进程占用 CPU 百分比。

  • %system:内核空间进程占用 CPU 百分比。

  • %guest:虚拟 CPU 占用 CPU 百分比。

  • %CPU:进程占用 CPU 百分比(相对于整个系统)。

  • CPU:进程所在的 CPU 编号。

  • minflt/s:每秒的次缺页错误数。

  • majflt/s:每秒的主缺页错误数。

  • VSZ:虚拟内存大小(单位:KB)。

  • RSS:驻留集大小,表示进程在物理内存中的大小(单位:KB)。

  • %MEM:进程占用物理内存的百分比。

  • kB_rd/s:每秒从磁盘读取的数据量(单位:KB)。

  • kB_wr/s:每秒写入磁盘的数据量(单位:KB)。

  • kB_ccwr/s:每秒取消写入磁盘的数据量(单位:KB)。

  • Command:进程的命令行。

pidstat 提供了对进程性能的实时监控,特别适用于查看特定进程的资源使用情况。

参考资料