linux 性能分析工具pidstat使用详解及案例【纯干货】
【1.1】pidstat
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标;
pidstat 的用法:
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
常用的参数:
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
TASK表示报告独立的task;CHILD关键字表示报告进程下所有线程统计信息;ALL表示报告独立的task和task下面的所有线程;
注意:task和子线程的全局的统计信息和pidstat选项无关;这些统计信息不会对应到当前的统计间隔,
这些统计信息只有在子线程kill或者完成的时候才会被收集;
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数
使用示例
示例一:查看所有进程的 CPU 使用情况( -u -p ALL)
[root@master service]# pidstat -u -p ALL
Linux 3.10.0-693.el7.x86_64 (master) 2026年05月09日 _x86_64_ (1 CPU)
15时19分02秒 UID PID %usr %system %guest %CPU CPU Command
15时19分02秒 0 1 0.00 0.01 0.00 0.01 0 systemd
15时19分02秒 0 2 0.00 0.00 0.00 0.00 0 kthreadd
15时19分02秒 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0
15时19分02秒 0 5 0.00 0.00 0.00 0.00 0 kworker/0:0H
15时19分02秒 0 6 0.00 0.00 0.00 0.00 0 kworker/u256:0
15时19分02秒 0 7 0.00 0.00 0.00 0.00 0 migration/0
15时19分02秒 0 8 0.00 0.00 0.00 0.00 0 rcu_bh
15时19分02秒 0 9 0.00 0.00 0.00 0.00 0 rcu_sched
15时19分02秒 0 10 0.00 0.00 0.00 0.00 0 watchdog/0
15时19分02秒 0 12 0.00 0.00 0.00 0.00 0 kdevtmpfs
15时19分02秒 0 13 0.00 0.00 0.00 0.00 0 netns
15时19分02秒 0 14 0.00 0.00 0.00 0.00 0 khungtaskd
15时19分02秒 0 15 0.00 0.00 0.00 0.00 0 writeback
15时19分02秒 0 16 0.00 0.00 0.00 0.00 0 kintegrityd
15时19分02秒 0 17 0.00 0.00 0.00 0.00 0 bioset
15时19分02秒 0 18 0.00 0.00 0.00 0.00 0 kblockd
结果说明
PID:进程ID
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令
示例二: 内存使用情况统计(-r)
[root@master service]# pidstat -r
Linux 3.10.0-693.el7.x86_64 (master) 2026年05月09日 _x86_64_ (1 CPU)
15时21分24秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
15时21分24秒 0 1 1.09 0.00 46236 6776 0.68 systemd
15时21分24秒 0 468 0.18 0.00 34888 3072 0.31 systemd-journal
15时21分24秒 0 485 0.08 0.00 129552 6176 0.62 lvmetad
15时21分24秒 0 494 0.14 0.00 47300 5376 0.54 systemd-udevd
15时21分24秒 0 630 0.01 0.00 55452 1096 0.11 auditd
15时21分24秒 81 654 0.04 0.00 34856 1976 0.20 dbus-daemon
15时21分24秒 0 657 0.09 0.00 219312 5568 0.56 abrtd
15时21分24秒 0 659 0.08 0.00 212308 4036 0.40 rsyslogd
15时21分24秒 998 661 0.02 0.00 8532 804 0.08 lsmd
15时21分24秒 0 662 0.11 0.00 216984 4772 0.48 abrt-watch-log
15时21分24秒 0 663 0.04 0.00 127888 2320 0.23 smartd
15时21分24秒 999 664 0.12 0.00 536212 12048 1.21 polkitd
15时21分24秒 0 674 0.06 0.00 24248 1720 0.17 systemd-logind
15时21分24秒 0 675 0.09 0.00 99608 6080 0.61 VGAuthService
15时21分24秒 0 677 0.69 0.00 305296 6304 0.63 vmtoolsd
15时21分24秒 997 685 0.02 0.00 115640 1776 0.18 chronyd
15时21分24秒 0 692 0.02 0.00 25856 916 0.09 atd
15时21分24秒 0 695 0.07 0.00 126236 1668 0.17 crond
15时21分24秒 0 711 0.08 0.00 123164 3836 0.38 login
15时21分24秒 0 936 0.45 0.00 562412 16580 1.66 tuned
15时21分24秒 0 937 0.07 0.00 105996 4076 0.41 sshd
15时21分24秒 27 976 2.49 0.02 1352960 404828 40.50 mysqld
15时21分24秒 0 1046 0.08 0.00 116052 2684 0.27 bash
15时21分24秒 0 1088 0.09 0.00 147784 5308 0.53 sshd
15时21分24秒 1000 1093 0.02 0.00 147784 2308 0.23 sshd
15时21分24秒 1000 1094 0.09 0.00 116048 2664 0.27 bash
15时21分24秒 1000 1131 0.07 0.00 220584 3824 0.38 su
15时21分24秒 0 1135 0.22 0.00 116164 2908 0.29 bash
15时21分24秒 0 1190 1.30 0.00 3058360 86340 8.64 java
15时21分24秒 0 1710 0.03 0.00 108140 1012 0.10 pidstat
结果说明
PID:进程标识符
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数表明虚拟内存地址映射成物理内存地址产生的
page fault次数,不需要从磁盘中加载页
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的 page在swap中,
这样的page fault为major page fault,一般在内存使用紧张时产生,需要从磁盘中加载页
VSZ: 该进程使用的虚拟内存(以kB为单位)
RSS: 该进程使用的物理内存(以kB为单位)
%MEM: 该进程使用内存的百分比
Command: 拉起进程对应的命令
示例三:显示各个进程的IO使用情况(-d)
[root@master service]# pidstat -d
Linux 3.10.0-693.el7.x86_64 (master) 2026年05月09日 _x86_64_ (1 CPU)
15时23分58秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
15时23分58秒 0 1 4.57 0.29 0.08 systemd
15时23分58秒 0 6 0.00 0.00 0.00 kworker/u256:0
15时23分58秒 0 37 0.00 0.00 0.00 kworker/u256:1
15时23分58秒 0 400 0.00 0.00 0.00 xfsaild/dm-0
15时23分58秒 0 468 0.05 0.00 0.00 systemd-journal
15时23分58秒 0 485 0.00 0.00 0.00 lvmetad
15时23分58秒 0 494 0.72 0.00 0.00 systemd-udevd
15时23分58秒 0 630 0.00 0.01 0.00 auditd
15时23分58秒 81 654 0.05 0.00 0.00 dbus-daemon
15时23分58秒 0 657 0.16 0.00 0.00 abrtd
15时23分58秒 0 659 0.05 0.07 0.04 rsyslogd
15时23分58秒 998 661 0.06 0.00 0.00 lsmd
15时23分58秒 0 662 0.06 0.00 0.00 abrt-watch-log
15时23分58秒 0 663 0.09 0.00 0.00 smartd
15时23分58秒 999 664 0.28 0.00 0.00 polkitd
15时23分58秒 0 674 0.03 0.00 0.00 systemd-logind
15时23分58秒 0 675 0.22 0.00 0.00 VGAuthService
15时23分58秒 0 677 0.24 0.00 0.00 vmtoolsd
15时23分58秒 997 685 0.01 0.00 0.00 chronyd
15时23分58秒 0 692 0.00 0.00 0.00 atd
15时23分58秒 0 695 0.07 0.01 0.00 crond
15时23分58秒 0 711 0.08 0.00 0.00 login
15时23分58秒 0 936 0.11 0.00 0.00 tuned
15时23分58秒 0 937 0.08 0.00 0.00 sshd
15时23分58秒 27 976 4.71 0.94 0.00 mysqld
15时23分58秒 0 1046 0.45 0.00 0.00 bash
15时23分58秒 0 1088 0.01 0.00 0.00 sshd
15时23分58秒 1000 1094 0.01 0.00 0.00 bash
15时23分58秒 1000 1131 0.00 0.00 0.00 su
15时23分58秒 0 1135 1.49 0.01 0.00 bash
15时23分58秒 0 1190 3.84 0.42 0.00 java
结果说明
PID:进程id
kB_rd/s:每秒从磁盘读取的数据量(KB)
kB_wr/s:每秒写入磁盘数据量(KB)
kB_ccwr/s:任务取消写入磁盘的数据量(KB),当任务截断脏的pagecache的时候会发生
COMMAND:task的命令名
示例四:显示每个进程的上下文切换情况(-w)& 针对特定进程统计(-p)
[root@master service]# pidstat -t -p 1190
Linux 3.10.0-693.el7.x86_64 (master) 2026年05月09日 _x86_64_ (1 CPU)
15时25分58秒 UID TGID TID %usr %system %guest %CPU CPU Command
15时25分58秒 0 1190 - 0.09 0.14 0.00 0.23 0 java
15时25分58秒 0 - 1190 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1193 0.00 0.01 0.00 0.01 0 |__java
15时25分58秒 0 - 1194 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1195 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1196 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1197 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1198 0.01 0.00 0.00 0.01 0 |__java
15时25分58秒 0 - 1199 0.00 0.00 0.00 0.01 0 |__java
15时25分58秒 0 - 1200 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1203 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1204 0.08 0.06 0.00 0.13 0 |__java
15时25分58秒 0 - 1205 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1206 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1207 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1208 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1209 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1210 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1211 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1212 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1213 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1214 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1215 0.00 0.00 0.00 0.00 0 |__java
15时25分58秒 0 - 1216 0.00 0.00 0.00 0.00 0 |__java
结果说明
PID:进程id
Cswch/s:每秒主动任务上下文切换数量,主动任务上下文切换,是指进程无法获取所需资源,导致的上下文切换;
比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换;
Nvcswch/s:每秒被动任务上下文切换数量,被动任务上下文切换,则是指进程由于时间片已到等原因,
被系统强制调度,进而发生的上下文切换;
比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换
Command:命令名
更多推荐





所有评论(0)