当前位置:首页 > 系统教程 > 正文

Linux perf性能分析实战(十七):PMU事件采集脚本完全指南

Linux perf性能分析实战(十七):PMU事件采集脚本完全指南

手把手教你使用perf监控PMU事件并自动化采集数据

在Linux系统性能调优中,perf PMU事件是理解CPU底层行为的核心工具。本文将带领小白用户从零开始,掌握如何使用perf工具采集PMU事件,并通过脚本实现自动化监控。

1. 什么是perf和PMU事件?

perf是Linux内核自带的性能分析工具,而PMU(Performance Monitoring Unit)是CPU内部的硬件单元,可记录Linux性能分析所需的各种底层事件,如CPU周期、缓存未命中、分支预测错误等。

2. 为什么需要PMU事件采集脚本?

手动运行perf命令只能获得瞬时的数据,通过perf脚本采集可以实现定时、持续的性能监控,为长期性能分析提供数据基础。

3. 准备工作:安装与验证

大多数Linux发行版已默认安装perf。若未安装,可使用包管理器安装(如sudo apt install linux-tools-common)。验证PMU支持:执行perf list,若看到大量硬件事件,说明PMU可用。

Linux perf性能分析实战(十七):PMU事件采集脚本完全指南 perf PMU事件  Linux性能分析 perf脚本采集 性能监控工具 第1张

4. 常用PMU事件速查

通过perf list可查看所有事件,重点关注硬件事件:cyclesinstructionscache-missesbranch-misses等。这些事件是性能监控工具的基础。

5. 手动采集示例

# 统计ls命令的CPU周期和指令数perf stat -e cycles,instructions ls

6. 编写自动化采集脚本

下面是一个简单的Shell脚本,每10秒采集一次PMU事件并记录到日志:

#!/bin/bash# perf_pmu_collect.shLOG_FILE="perf_pmu.log"while true; do    echo "--- $(date) ---" >> $LOG_FILE    perf stat -e cycles,instructions,cache-misses -a sleep 1 2>> $LOG_FILE    sleep 10done

赋予执行权限后运行./perf_pmu_collect.sh,即可后台持续采集。

7. 使用perf script处理采样数据

若需要更详细的分析,可以用perf record采集样本,再用perf script输出可读性更强的脚本数据,结合awk等工具分析。

8. 实战:监控CPU周期和缓存未命中

以Nginx服务为例,采集其PID的PMU事件:perf stat -e cycles,instructions,cache-misses -p $(pidof nginx) sleep 10。通过脚本可定期记录,找出性能瓶颈。

9. 总结

本文介绍了perf PMU事件的基本概念、手动采集方法以及自动化脚本编写技巧。掌握这些技能,你将能深入分析Linux系统性能,为优化提供数据支持。

注意:PMU事件名称可能因CPU架构而异,请以实际perf list输出为准。