实战

安装 + 启用

  [plaintext]
1
2
sudo apt-get install sysstat sudo service sysstat start

pidstat

这里是 windows 的 linux 发行版本。

  [plaintext]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ 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

解释一下下面的例子

解释一下,

  [plaintext]
1
2
3
4
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 活动等。

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

命令格式:

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

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

示例:

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

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

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

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

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

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

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

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

  5. 监视特定进程
      [bash]
    1
    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 提供了对进程性能的实时监控,特别适用于查看特定进程的资源使用情况。

参考资料