当前位置: 首页 > news >正文

pidstat 使用教程:功能介绍及实战示例

pidstat 使用教程:功能介绍及实战示例


引言

在 Linux 系统性能调优和故障排查过程中,了解各进程的 CPU、内存、IO 以及上下文切换等指标至关重要。pidstatsysstat 工具包中的一员,专门用于实时监控单个或多个进程的资源使用情况。本文将带你深入了解 pidstat 的常用功能,并通过实战示例演示如何高效地采集和分析进程级性能数据。


什么是 pidstat

  • 来源pidstatsysstat 工具包一起发布,支持多种 Linux 发行版。
  • 功能定位:与 topps 不同,pidstat 更侧重于以时间序列的方式,持续跟踪指定进程(PID)的资源使用情况,并生成统计报告。
  • 输出维度
    • CPU 使用 (-u)
    • 内存使用 (-r)
    • I/O 活动 (-d)
    • 任务创建/退出 (-t)
    • 上下文切换 (-w)
    • 每线程统计(-I

安装与启动

如果系统中尚未安装 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 和上下文切换信息,适合一次性全面排查。


小贴士

  1. CSV 格式输出
    使用 -h 取消标题,配合重定向即可生成 CSV:
    pidstat -u -r -d -w 1 60 | tail -n +4 > pidstat_report.csv
    
  2. 过滤干扰进程
    若只关注某个用户下的进程,可加 -u <用户名> 进一步筛选。
  3. 结合 Grafana/InfluxDB
    pidstat 输出定期采集到时间序列数据库,配合图形化工具,形成可视化面板,便于长期趋势分析。

总结

  • pidstat 是 Linux 系统级性能监控的重要利器,能以时间序列方式跟踪单个或多个进程/线程的资源使用状态。
  • 常用场景包括 CPU 瓶颈定位、内存泄漏排查、I/O 瓶颈分析及上下文切换调优。
  • 通过本文示例,你已掌握如何快速上手 pidstat,并能结合脚本或可视化平台,构建完善的进程级监控解决方案。

快在你的日常运维和性能调优中试试这些命令吧!

http://www.xdnf.cn/news/200449.html

相关文章:

  • 用jmeter压测接口,并生成压测报告
  • 工业通讯现场中关于EtherCAT转TCPIP网关的现场应用
  • 初识c++
  • Miniconda Windows10版本下载和安装
  • 工业园区工厂企业数字IP广播应急呼叫对讲系统:数字IP广播极大提升工厂企业管理效率与应急响应效能
  • JAVA实现将富文本内容插入已有word文档并下载(dock4j+jsoup)
  • 【OSG学习笔记】Day 12: 回调机制——动态更新场景
  • Vue 3 vuedraggable 例子
  • AI网文热门题材生成用什么?小说创作工具来帮忙
  • C++中的智能指针
  • 双向流-固计算前处理和耦合设置
  • tanstack动态路由 + router/ 目录管理方案
  • 树莓派学习专题<12>:使用x264库实施H264编码--Linux和Windows上的部署
  • OpenVLA-OFT
  • 谷歌政策松绑?!3月仅下架4.8万款App,同比减少50%
  • Spring生命周期
  • Linux系统编程---exec簇:进程的加载与替换
  • 安装qt4.8.7
  • 软件评测:从多维度看其界面、功能、性能稳定性如何?
  • Java后端开发day38--不可变集合Stream流
  • Java后端接口调用拦截处理:注解与拦截器的实现
  • STM32实现SPI转USB虚拟串口输出(实测40M时钟不丢包)
  • 报表工具:企业数据决策的“智能翻译官“
  • 【knife4j】添加Cookie
  • 12. RANSAC点云多平面拟合分割
  • MySQL5.7.21查询入门
  • 软链接与硬链接
  • Transformer Prefill阶段并行计算:本质、流程与思考
  • 电价单位解析与用电设备耗电成本计算
  • python程序设习题答案