pidstat 使用教程:功能介绍及实战示例
pidstat 使用教程:功能介绍及实战示例
引言
在 Linux 系统性能调优和故障排查过程中,了解各进程的 CPU、内存、IO 以及上下文切换等指标至关重要。pidstat
是 sysstat
工具包中的一员,专门用于实时监控单个或多个进程的资源使用情况。本文将带你深入了解 pidstat
的常用功能,并通过实战示例演示如何高效地采集和分析进程级性能数据。
什么是 pidstat
- 来源:
pidstat
随sysstat
工具包一起发布,支持多种 Linux 发行版。 - 功能定位:与
top
、ps
不同,pidstat
更侧重于以时间序列的方式,持续跟踪指定进程(PID)的资源使用情况,并生成统计报告。 - 输出维度:
- CPU 使用 (
-u
) - 内存使用 (
-r
) - I/O 活动 (
-d
) - 任务创建/退出 (
-t
) - 上下文切换 (
-w
) - 每线程统计(
-I
)
- CPU 使用 (
安装与启动
如果系统中尚未安装 sysstat
,可按以下方式快速安装:
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install sysstat# RHEL/CentOS
sudo yum install sysstat
安装完成后,pidstat
即可直接使用:
$ pidstat --version
pidstat from sysstat version 12.7.7
常用选项概览
选项 | 含义 |
---|---|
-u | 报告 CPU 使用率 |
-r | 报告内存(常驻/虚拟/故障) |
-d | 报告分页、设备 I/O |
-t | 报告线程(LWP)级别的统计 |
-w | 报告上下文切换(voluntary/involuntary) |
-p <PID> | 指定单个或多个进程 ID(逗号分隔或 ALL 全部进程) |
-I | 报告每个线程(仅 Linux 3.10+) |
-h | 显示帮助信息 |
通用用法格式:
pidstat [options] [interval [count]]
interval
:采样间隔(秒)count
:采样次数(默认持续输出,直到 Ctrl+C)
实战示例
1. 监控所有进程的 CPU 使用情况
pidstat -u 2 5
效果:每 2 秒汇报一次,连续 5 次,输出示例:
12:00:00 UID PID %usr %system %guest %CPU CPU Command
12:00:02 1000 1234 1.20 0.10 0.00 1.30 0 apache2
...
2. 跟踪指定进程的内存使用
pidstat -r -p 1234 1 10
1234
为目标进程 PID- 每秒采样 10 次,直观了解该进程的常驻内存(RSS)、虚拟内存(VSZ)和页面故障(minflt/maxflt):
12:05:00 PID minflt/s majflt/s VSZ RSS %MEM
12:05:01 1234 10.00 0.00 500M 100M 0.5
...
3. 统计 I/O 活动和分页情况
pidstat -d 3 4
输出示例:
12:10:00 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
12:10:03 1000 1234 0.00 10.00 0.00 myapp
4. 监控线程级别的上下文切换
pidstat -w -t 5 3
-t
打开线程显示-w
输出自愿/非自愿上下文切换数
示例:
12:15:00 UID TID cswch/s nvcswch/s Command
12:15:05 1000 1234 50.00 10.00 myapp
12:15:05 1000 1235 30.00 5.00 myapp
5. 综合多维度监控
pidstat -urdw 2
该命令同时输出 CPU、内存、I/O 和上下文切换信息,适合一次性全面排查。
小贴士
- CSV 格式输出
使用-h
取消标题,配合重定向即可生成 CSV:pidstat -u -r -d -w 1 60 | tail -n +4 > pidstat_report.csv
- 过滤干扰进程
若只关注某个用户下的进程,可加-u <用户名>
进一步筛选。 - 结合 Grafana/InfluxDB
将pidstat
输出定期采集到时间序列数据库,配合图形化工具,形成可视化面板,便于长期趋势分析。
总结
pidstat
是 Linux 系统级性能监控的重要利器,能以时间序列方式跟踪单个或多个进程/线程的资源使用状态。- 常用场景包括 CPU 瓶颈定位、内存泄漏排查、I/O 瓶颈分析及上下文切换调优。
- 通过本文示例,你已掌握如何快速上手
pidstat
,并能结合脚本或可视化平台,构建完善的进程级监控解决方案。
快在你的日常运维和性能调优中试试这些命令吧!