PERF EVENT 硬件篇

简介: 简介 本文将通过以 X86 为例子介绍硬件 PMU 如何为 linux kernel perf_event 子系统提供硬件性能采集功能 理解硬件 MSR (Model Specify Register) 可以理解为CPU硬件的专用寄存器,下述的所有寄存器都是这个类型 汇编指令 rdmsr/wrm.

简介

本文将通过以 X86 为例子介绍硬件 PMU 如何为 linux kernel perf_event 子系统提供硬件性能采集功能

理解硬件

MSR (Model Specify Register)

可以理解为CPU硬件的专用寄存器,下述的所有寄存器都是这个类型

汇编指令 rdmsr/wrmsr

wrmsr 0x38d 1234 # addr value

如果是 pmc 还可以用 rdpmc 指令

rdpmc [0~7] # input ECX output EDX:EAX

在硬件 pmu 的操作过程中大多类似以下模式

  1. 写入 pmc 对应的状态 msr,决定要打开哪个硬件事件
  2. 通过读取 pmc 获取之前定义的硬件事件数值

PMCx 与 PERFEVTSELx

通用事件寄存器,成对出现,由 PERFEVTSEL 配置事件,PMC 读取事件数值。在现代 x86 产品中被称之为通用 pmu 设备,一般为4个,如果关闭虚拟化可以使用8个

FIXED_CTRx 与 FIXED_CTR_CTRL

专用寄存器,通过唯一的 FIXED_CTR_CTRL 来开启对应的 FIXED_CTRx。无事件控制,每个 FIXED_CTRx 只能记录对应的硬件事件

RDT (Resource Direct Tech) 是一种全新的性能采集方式,有点与上述两种寄存器有所不同,但是在软件接口上会更简洁。支持 L3 cache 相关资源使用计数

它的操作过程不用定义事件类型,只要以下步骤

  1. 通过 PQR_ASSOC msr寄存器写入 rmid 就已经开始统计相关事件的计数
  2. 通过QM_EVTSEL 输入要读取的事件 id 和 rmid
  3. 最后通过 QM_CTR 即可获得数据

可以看出它不再以单独的CPU为维度,用户可以自定义 rmid,可以用 task,也可以用 cpuid,甚至多者混合

操作

linux 系统提供了 msr 内核模块,允许用户可以在用户态直接操作 msr

ls /dev/cpu/0/msr

msr 都是 per-cpu 的设备,所以需要指定具体 cpu。 通过 lseek 来定位 msr,通过 write/read 来读写

通过这种方式来获取 cpu 性能是 bypass 内核,同样无法利用到 perf_event 子系统提供的一系列功能,比如关联某个 task, cgroup,也无法在有限的 pmu 个数中产生分时复用

总结

硬件 PMU 的实现就是提供了一系列的可操作 MSR, 通过 MSR 操作可以灵活定义要监控的内容,但是 linux kernel 中通过实现 perf_event 子系统对用户态提供了一套简洁通用的操作界面

其他

PERF_EVENT 系列文章

  1. PERF EVENT API篇
  2. PERF EVENT 硬件篇
  3. PERF EVENT 内核篇
  4. PERF EVENT 硬件篇续
目录
相关文章
|
数据采集 机器学习/深度学习 监控
Arm Coresight 介绍
Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。
2205 1
|
存储 缓存 监控
安谋科技(Arm China)马闯:Arm架构下性能分析与优化介绍
2023年9月19日,系列课程第九节《Arm®架构下性能分析与优化介绍》正式上线,由安谋科技 (Arm China)主任工程师马闯主讲,内容涵盖:Arm架构下性能监控单元 (PMU) 介绍、Arm统计性能分析扩展 (SPE) 介绍、Arm性能分析工具介绍、Arm架构下性能优化案例分享,本期节目在阿里云官网、阿里云微信视频号、阿里云钉钉视频号、InfoQ官网、阿里云开发者微信视频号、阿里云创新中心直播平台 & 微信视频号同步播出,同时可以点击【https://developer.aliyun.com/topic/ecs-yitian】进入【倚天实例迁移课程官网】了解更多内容。
|
监控 Linux API
中断系列第四篇:中断爱养狗?
中断系列第四篇:中断爱养狗?
478 0
|
网络协议 Linux 数据库
|
9月前
|
存储 SQL 缓存
Perf Arm SPE介绍与使用
本次分享的主题是 Perf Arm-SPE 的介绍及使用,本次分享主要介绍如何在倚天 710 平台上利用 Arm-SPE 特性定位伪共享问题、分析内存访问、分析指令延时以及监控访存延时等功能。 1. 背景介绍 2. Arm SPE的原理 3. Arm SPE在倚天服务器上的应用 4. Arm SPE 更多特性与功能的探索
713 0
|
11月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
663 1
|
监控 Linux C++
perf_event_open学习 —— mmap方式读取
perf_event_open学习 —— mmap方式读取
|
Unix Linux Shell
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(三)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
2939 2
|
监控 Linux 测试技术
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
788 0