pidstat是Linux系统中用于进程级性能监控的强大工具,属于sysstat包,可详细分析CPU、内存、I/O及上下文切换等指标。通过pidstat -u监控CPU使用情况,区分用户态(%usr)和内核态(%system)消耗;pidstat -r查看内存使用,关注主缺页中断(majflt/s)判断是否频繁读盘;pidstat -d检测I/O读写(kB_rd/s、kB_wr/s);pidstat -w观察上下文切换,非自愿切换(nvcswch/s)过高提示CPU竞争。结合-p指定进程、-t分析线程,可精确定位性能瓶颈。相比top的瞬时视图,pidstat提供时间序列数据,适合深入诊断如高CPU、内存不足或I/O阻塞等问题,常与lsof、iostat等工具配合使用,是性能调优的关键利器。

在Linux系统中,要进行进程统计和性能监控,
pidstat
top
htop
pidstat
sysstat
安装sysstat
sudo apt update sudo apt install sysstat
sudo yum install sysstat # 或者对于新版本Fedora sudo dnf install sysstat
pidstat
安装完成后,你就可以开始使用
pidstat
pidstat
pidstat
但这通常不足以满足我们的需求。
pidstat
监控CPU利用率 (-u
pidstat -u 2 5 # 每2秒采样一次,共采样5次,显示CPU使用情况
输出会包含
%usr
%system
%guest
%wait
监控内存利用率 (-r
pidstat -r 2 5 # 显示内存使用情况
关键指标如
minflt/s
majflt/s
VSZ
RSS
监控I/O利用率 (-d
pidstat -d 2 5 # 显示I/O使用情况
主要关注
kB_rd/s
kB_wr/s
ccwr/s
监控上下文切换 (-w
pidstat -w 2 5 # 显示上下文切换情况
cswch/s
nvcswch/s
监控指定进程 (-p <PID>
-p ALL
pidstat -u -p 12345 2 5 # 监控PID为12345的进程CPU使用 pidstat -u -p ALL 2 5 # 监控所有进程的CPU使用
监控线程 (-t
pidstat -u -t -p 12345 2 5 # 监控PID为12345的进程及其所有线程的CPU使用
这在多线程应用中尤其有用,可以精确到是哪个线程导致了资源消耗。
你可以将这些选项组合起来,例如:
pidstat -udrw -p 12345 1
在Linux系统管理和应用性能调优中,我们经常会遇到系统变慢、应用响应迟钝的问题。这时,很多人会习惯性地启动
top
htop
pidstat
想象一下,你的Web服务突然响应变慢了。
top
httpd
pidstat -u -p <httpd_PID> 2 5
%usr
%system
%wait
再比如,一个Java应用消耗了大量内存。
top
java
RSS
pidstat -r -p <java_PID> 2 5
majflt/s
这种细致的分解能力,使得
pidstat
理解
pidstat
CPU统计 (-u
%usr
%system
%guest
%wait
实战案例: 一个数据处理脚本运行缓慢。
pidstat -u -p <script_PID> 1
%usr
%system
%wait
%wait
内存统计 (-r
minflt/s
majflt/s
VSZ
RSS
实战案例: 一个数据库服务响应迟缓。
pidstat -r -p <db_PID> 1
majflt/s
I/O统计 (-d
kB_rd/s
kB_wr/s
ccwr/s
实战案例: 文件服务器的性能下降。
pidstat -d -p <file_server_PID> 1
kB_rd/s
kB_wr/s
上下文切换统计 (-w
cswch/s
nvcswch/s
实战案例: 一个多线程应用吞吐量上不去。
pidstat -w -p <app_PID> 1
nvcswch/s
pidstat
多进程/线程跟踪:
当需要同时关注多个特定进程时,你可以通过逗号分隔PID:
pidstat -u -p 1001,1002,1003 1
这在微服务架构或分布式系统中,需要同时观察多个相关服务进程时非常有用。
对于多线程应用,
-t
pidstat -u -t -p <your_app_PID> 1
输出会为每个线程(LWP,Light-Weight Process)都显示一行数据。通过这种方式,我们可以迅速识别出是哪个具体的线程导致了CPU飙升,进而深入分析该线程的代码逻辑。例如,一个Web服务器的某个处理请求的线程可能因为一个低效的数据库查询而长时间占用CPU,或者一个后台任务线程在进行大量的计算。
数据持久化与脚本化:
将
pidstat
pidstat -udrw -p ALL 5 60 > /var/log/pidstat_daily.log
这样,你可以收集一段时间的数据,然后使用文本处理工具(如
awk
grep
注意事项和局限性:
pidstat
pidstat
pidstat
sar
sysstat
pidstat
perf
oprofile
pidstat
free -h
df -h
iostat
netstat
ss
lsof
pidstat -d
lsof -p <PID>
iostat
总而言之,
pidstat
以上就是如何在Linux中进程统计 Linux pidstat性能监控的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号