精读笔记(RHCA 英文教材)· RH442 Chapter 2 Selecting Performance Monitoring Tools
精读笔记(RHCA 英文教材)· RH442 Chapter 2 Selecting Performance Monitoring Tools
教材原文:RHCA 官方英文教材(PDF 第 44~95 页)(OCR 整书版已从本站移除,本页为章节精读) 关联中文笔记:
02-09-性能调优RH442(RHCA).md(先监控分析 top/vmstat/iostat/sar/pidstat 再优化);本章=监控工具选型与用法(基础工具→sysstat 套件→PCP)。 结构:3 个 Section(2.1 识别监控工具+GE perftools-system;2.2 sysstat+GE perftools-sysstat;2.3 PCP+GE perftools-copilot)+ Lab(lab: perftools-review)。
Chapter Goal / Objectives(原文+译)
- GOAL: Evaluating the large selection of performance monitoring tools available and selecting the appropriate ones for a given task.(评估大量可选监控工具,为任务选对工具。)
- OBJECTIVES: ① 识别常见系统监控工具并解释用途;② 描述 sysstat 架构与典型用法;③ 用 Performance Co-Pilot 采集性能数据。
2.1 Identifying System Monitoring Tools
- 监控目标:提供系统真实时序行为数据;判断当前运行是否满足技术要求。Linux 内核维护计数器,事件(磁盘读/写、系统调用等)触发计数——工具从
/proc与内核计数器取数。 - ps:进程状态快照。
ps aux(BSD 风格,含 TTY,?=非终端启动);ps -ef(UNIX 风格);ps -p $(pidof nginx)按名字查 PID;-o etime取运行时长;-o定制列。- 关键列:PID;TIME=进程启动以来总 CPU 时间;%CPU=上一秒所有 CPU 合计使用率;RSS=常驻物理内存 KiB;%MEM=RSS/物理内存。
- top:实时进程报告,默认按 CPU 降序;
top -n 1出一屏即退;有交互过滤/操控。⚠️ top 本身开销大(“imposes a significant overhead”),长时间监控慎用。 - free:内存概览;
free -m/-s 1(每秒刷新)。若 buff/cache 与 available 趋近 0=内存吃紧;若 available>20% 总量且 used 接近总量=健康。 - 文件系统工具:
lsblk -fp(UUID/FSTYPE/挂载点);findmnt(挂载树;-s 读 fstab、-S 按源盘搜);df -h(各挂载点用量);du -sh <dir>(目录总大小)。 - gnome-system-monitor:GUI(Resources 页看 CPU/Memory/Swap/Network 历史;Processes 页右键可看某进程 Memory Maps——虚拟内存=物理内存+swap 之和,运行进程把物理内存位置映射到磁盘文件)。
2.1 GE(lab: perftools-system)
servera 上装并起 nginx、建 /dev/vdb1 挂 /opt:用 ps -p $(pidof nginx)、ps -p <pid> -o etime、进程树(PID/PPID/CMD)、top 找内存占用最高进程、du -h /opt/* 等工具记录观察结果。
2.2 Describing the sysstat Package Utilities
- sysstat 架构:工具从内核计数器取原始数据→整理展示→把执行历史存入数据库/数据文件(可算均值、按预定义时间间隔留存)。
- 套件成员:
mpstat(CPU)、iostat(CPU+设备/分区/NFS I/O)、pidstat(进程级 CPU/磁盘/内存)、tapestat、cifsiostat、sar(采集/报告/保存系统活动)。 - 共性:首行=自最近一次启动以来的均值(可能还插入 dummy 记录),采样行才是指定间隔的统计;都支持 interval+count(如
iostat 1 3)。 - 特性:历史长度可配、数据可存档并导出 CSV/JSON/XML、
isag画图、自动选单位、支持热插拔设备。 - mpstat:
mpstat -P ALL 1 3每 CPU 报告;数据来自 /proc/stat、/proc/interrupts;列:CPU(all=合计)、%usr、%sys、%idle…;-I看硬/软中断;-o JSON。 - iostat:每盘 I/O 统计(工作量刻画/利用率/饱和度),开销可忽略(用内核计数器);
iostat -x扩展含 IOPS、吞吐、平均读写请求大小、平均响应时间、盘处理 I/O 时间占比(%util)。 - pidstat:进程级统计;
pidstat -p <pid> 1 3;无 -p 时只显示间隔内有变化的进程;选项-t线程、-d磁盘、-r页错误+内存、-uCPU(默认);看别人进程的统计需 root。 - vmstat(procps-ng 包):内存排障利器。无参数=启动以来均值;
vmstat <delay> <count>;-S m|k|M换单位。⚠️ 首行是开机以来均值,分析要忽略第一行(还有两行表头)。- 列速记:procs r(等运行)/b(不可中断睡眠);memory swpd/free/buff/cache;swap si/so(每秒换入/换出页);io bi/bo;system in(中断/秒)/cs(上下文切换/秒);cpu us/sy/id/wa/st(st=被 hypervisor 偷走,VM 环境重要)。
- sar(System Activity Reporter):监控当前活动+存档历史。默认报 CPU;
-o <file>存文件(同时写文件和控制台);历史数据由 cron 或 systemd timer 定时跑sa1/sa2/sadc收集到/var/log/sa/saDD(或 saYYYMMDD)。/etc/cron.d/sysstat:每 10 分钟sa1 1 1;23:53sa2 -A生成日报。/etc/sysconfig/sysstat的HISTORY变量控制保留天数。- 读历史:
sar -q -f /var/log/sa/sa03(-f 指定数据文件)。常用选项:-B 分页、-b I/O、-d 块设备、-n 网络、-r 内存、-q 队列/负载(饱和度)。 - systemd timer(RHEL7+):
sysstat-collect.timer(OnCalendar=*:00/10 每 10 分钟)。⚠️ 别改 /usr/lib/systemd/system 下文件(包更新会覆盖),复制到 /etc/systemd/system 再改;改完systemctl daemon-reload、systemctl enable --now <unit>.timer。
2.2 GE(lab: perftools-sysstat)
servera 上跑 stress.py 制造负载:用 vmstat 1 5、mpstat -P ALL 1、sar、iostat -x、pidstat -d 等观察 CPU/内存/磁盘/进程;pkill stress.py 收尾,对照各工具输出验证结论。
2.3 Collecting Performance Data with Performance Co-Pilot(PCP)
- PCP 概述:监控/可视化/存储/分析系统级性能的套件(工具+服务+库);轻量分布式架构,便于集中分析本地+远程主机;既能实时也能回放历史归档。
- 架构:被监控主机上每个指标域由 PMDA(Performance Metrics Domain Agent)采集(内核、应用等);所有 PMDA 由 pmcd(Performance Metrics Collector Daemon)统一管理;客户端工具连 pmcd,pmcd 当路由器把请求转发给对应 PMDA 并回传;历史数据由 pmlogger 写归档供回顾分析。
- 与旧工具的对照:几乎一一对应(iostat/pidstat/free/vmstat/dstat/top…),PCP 好处=统一存储结构。
- 启动/装包:
systemctl enable --now pmcd;yum install pcp-system-tools(含 PCP 版旧命令:pcp free、pcp dstat等)。 - 常用客户端命令:
pcp dstat:同屏多资源对比(默认 -cdngy:cpu/disk/net/paging/system)。pmstat:≈vmstat(-t 间隔、-s 次数)。pmcollectl:collectl 的 Python 移植(CPU/Disk/Network 摘要)。pminfo:列出 PCP 数据库里的指标(如proc.nprocs、kernel.all.load);pminfo -dt <metric>看描述与类型。pmval <metric>:实时取样某个指标。pmchart:GUI 画图(默认本地 pmcd,-h remotehost连远程;可多图;可回放归档)。
- 远程访问前提:本/远端都装 pcp;远端放行 44321/tcp;两端都启 pmcd;需要工具的主机装 pcp-system-tools。
- pmlogger 归档:默认每秒收集,落
/var/log/pcp/pmlogger/<host>/(文件名 ISO 日期开头,附元数据/索引文件);pmdumplog查内部细节(-Z 时区)。 - 回放历史:命令行工具加
-a <归档>表示读归档而非实时;pmval/pmchart 用 -S/-T 指定起止时间窗。
2.3 GE(lab: perftools-copilot)
servera 启 pmcd;用 pminfo/pmval 查负载(kernel.all.load);yum install pcp-gui 后用 pmchart 连 servera 画图;对 sampleserver 归档(pmval -a …/20190707.00.10.0 -S/-T 时间段)做历史分析。
Lab 概要(lab: perftools-review)
serverb 上:装 sysstat 相关包;装并启 pmcd;把 sampleserver.tgz 解到 /var/log/pcp 下;用 pmval/pmchart 读归档看 1min-load 与网络收发包数等指标 → 评分 lab grade perftools-review。
命令速查表
| 用途 | 命令 | | 进程/实时 | ps aux、ps -ef、ps -p $(pidof nginx) -o etime;top -n 1 | | 内存/磁盘 | free -m -s 1;df -h;du -sh <dir>;lsblk -fp;findmnt [-s\|-S] | | CPU/盘/进程 I/O | mpstat -P ALL 1 3;iostat [-x] 1 3;pidstat [-d\|-r\|-t] -p <pid> 1 3 | | 内存/负载 | vmstat 1 5(忽略首行);sar [-q\|-B\|-n DEV\|-r] 1 3;sar -f /var/log/sa/saDD | | sysstat 定时 | /etc/cron.d/sysstat(sa1/sa2);timer:sysstat-collect.timer | | PCP 基础 | systemctl enable --now pmcd;yum install pcp pcp-system-tools pcp-gui | | PCP 命令 | pcp free、pcp dstat、pmstat -s 5、pmcollectl -c 5、pminfo、pmval kernel.all.load、pmchart -h <host> | | 归档/回放 | pmlogger;pmdumplog;pmval -a <归档> -S <起> -T <止> | | 实验/评分 | lab start perftools-system\|perftools-sysstat\|perftools-copilot\|perftools-review;lab grade perftools-review |
词汇表
| 英文 | 中文 | 速记 |
|---|---|---|
| kernel counters | 内核计数器 | 工具的数据源头 |
| ps / top / free | 进程/实时/内存工具 | 快照 vs 实时 vs 概览 |
| RSS | 常驻内存 | ps %MEM 分母=物理内存 |
| sysstat | 系统统计套件 | mpstat/iostat/pidstat/sar |
| interval & count | 间隔与次数 | 如 iostat 1 3 |
| vmstat | 虚拟内存统计 | 忽略首行均值 |
| %st / steal | 被偷 CPU | hypervisor 占用(VM 信号) |
| sar / sa1 / sa2 / sadc | 系统活动报告器 | cron/timer 定时归档 /var/log/sa |
| systemd timer | 定时器单元 | OnCalendar 触发 service |
| PCP / pmcd / PMDA | 性能伴飞/采集守护/指标域代理 | 客户端连 pmcd 路由到 PMDA |
| pmlogger | 归档记录器 | 默认每秒写 /var/log/pcp/pmlogger |
| pminfo / pmval / pmchart | 指标查询/取样/画图 | pmval -a 读归档 |
| 44321/tcp | PCP 端口 | 远程监控要放行 |
自测 10 题
- ps 三种选项格式?(UNIX 带-、BSD 不带-、GNU 双--)
- top 长时间监控的注意点?(开销大)
- free 里怎么算健康?(available>20% 总量;buff/cache 不近零)
- sysstat 首行输出是什么?(开机以来均值,不是当前采样)
- iostat -x 多给哪些指标?(平均请求大小/响应时间/%util 等)
- vmstat 输出哪列表示被 hypervisor 偷走?(st;VM 环境注意)
- sar 历史数据存在哪、怎么读?(/var/log/sa/saDD;sar -f)
- sysstat 定时收集靠什么?(cron sa1/sa2 或 sysstat-collect.timer;10 分钟一次)
- PCP 的 pmcd 与 PMDA 什么关系?(pmcd 总管,路由请求给各域 PMDA)
- 读 PCP 归档用什么参数?(-a <归档>,pmval/pmchart 再配 -S/-T 时间窗)
