实战
安装 + 启用
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:进程的命令行。
具体针对你提供的样本数据的解释:
- systemd 进程 (PID 1):
%usr
和%system
的值都很低,表示系统进程的用户空间和内核空间占用 CPU 的百分比都很小。%guest
、%wait
和%CPU
的值也都很小,表示在此时点,systemd
进程的虚拟 CPU 占用、等待 CPU 的百分比和进程占用整个 CPU 的百分比都很小。
- systemd-journal 进程 (PID 38):
- 对于这个进程,所有的 CPU 统计值都为 0,表示在此时点,该进程几乎没有占用 CPU 资源。
- systemd-udevd 进程 (PID 62):
- 同样,对于这个进程,所有的 CPU 统计值都为 0,表示在此时点,该进程几乎没有占用 CPU 资源。
这个输出显示了特定时间点的几个系统进程的 CPU 使用情况,可以用于监视进程的活动以及评估系统的整体性能。
chat
Q1-详细介绍一下 linux pidstat 命令
pidstat
是 sysstat
工具包的一部分,用于报告进程统计信息,包括 CPU 使用情况、内存使用情况和 I/O 活动等。
它可以提供有关特定进程以及整个系统中进程的性能信息。
命令格式:
pidstat [选项] [时间间隔] [次数] [-u] [-r] [-d] [-h] [-I] [-p <pid>]
- 选项:
-u
:显示 CPU 使用情况。-r
:显示内存使用情况。-d
:显示磁盘 I/O 活动。-h
:以易读的格式显示数据。-I
:显示额外的统计信息。-p <pid>
:指定要监视的进程ID。
-
时间间隔:指定输出统计信息的时间间隔。
- 次数:指定输出统计信息的次数。
示例:
- 显示 CPU 使用情况:
pidstat -u 1 5
上述命令每隔1秒输出一次 CPU 使用情况,共输出5次。
- 显示内存使用情况:
pidstat -r 1 5
上述命令每隔1秒输出一次内存使用情况,共输出5次。
- 显示磁盘 I/O 活动:
pidstat -d 1 5
上述命令每隔1秒输出一次磁盘 I/O 活动,共输出5次。
- 显示额外的统计信息:
pidstat -I 1 5
上述命令每隔1秒输出一次额外的统计信息,共输出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
提供了对进程性能的实时监控,特别适用于查看特定进程的资源使用情况。