使用SMMU的PMU查看性能数据

-v0.1 Sherlock 2019.9.28 init

ARM的SMMU提供了性能相关的统计寄存器(Performance Monitor Counter Groups - PMCG),
目前相关驱动已经合入Linux内核主线。我们可以配合用户态的perf工具使用。本文介绍具
体的使用方法。

  • 首先要确定使用的系统里有arm_smmuv3_pmu这个模块,或者它已经被编译进内核。
    这个模块的代码在内核目录kernel/drivers/perf/arm_smmuv3_pmu.c, 内核配置是:
    CONFIG_ARM_SMMU_V3_PMU

  • 确定使用的单板上的UEFI里有你要测试的模块对应的SMMU PMCG节点,没有这个节点的
    的话即使加载上面的驱动也无法使用SMMU PMCG

  • 正常使用的话,dmesg | grep pmcg可以看见类似信息:

Ubuntu:/ # dmesg | grep pmcg
[ 1232.379951] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.8.auto: option mask 0x1
[ 1232.380040] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.8.auto: Registered PMU @ 0x0000000148020000 using 8 counters with Individual filter settings
[ 1232.380094] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.9.auto: option mask 0x1
[ 1232.380142] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.9.auto: Registered PMU @ 0x0000000201020000 using 8 counters with Individual filter settings
[ 1232.380190] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.10.auto: option mask 0x1
[ 1232.380241] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.10.auto: Registered PMU @ 0x0000000100020000 using 8 counters with Individual filter settings
[ 1232.380286] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.11.auto: option mask 0x1
[ 1232.380337] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.11.auto: Registered PMU @ 0x0000000140020000 using 8 counters with Individual filter settings
[ 1232.380397] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.12.auto: option mask 0x1
[ 1232.380445] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.12.auto: Registered PMU @ 0x0000200148020000 using 8 counters with Individual filter settings
[ 1232.380491] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.13.auto: option mask 0x1
[ 1232.380542] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.13.auto: Registered PMU @ 0x0000200201020000 using 8 counters with Individual filter settings
[ 1232.380601] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.14.auto: option mask 0x1
[ 1232.380653] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.14.auto: Registered PMU @ 0x0000200100020000 using 8 counters with Individual filter settings
[ 1232.380698] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.15.auto: option mask 0x1
[ 1232.380770] arm-smmu-v3-pmcg arm-smmu-v3-pmcg.15.auto: Registered PMU @ 0x0000200140020000 using 8 counters with Individual filter settings
  • 使用perf list | grep pmcg可以查看系统支持的pmcg相关的时间类型:
Ubuntu:/ # perf list | grep pmcg[...]smmuv3_pmcg_140020/config_cache_miss/              [Kernel PMU event]smmuv3_pmcg_140020/config_struct_access/           [Kernel PMU event]smmuv3_pmcg_140020/cycles/                         [Kernel PMU event]smmuv3_pmcg_140020/pcie_ats_trans_passed/          [Kernel PMU event]smmuv3_pmcg_140020/pcie_ats_trans_rq/              [Kernel PMU event]smmuv3_pmcg_140020/tlb_miss/                       [Kernel PMU event]smmuv3_pmcg_140020/trans_table_walk_access/        [Kernel PMU event]smmuv3_pmcg_140020/transaction/                    [Kernel PMU event][...]
  • 使用pmcg之前需要先明确需要测试的设备是在哪个pmcg之下,pmcg的命名方式是:
    smmuv3_pmcg_<phys_addr_page>, 这里的phys_addr_page是对应SMMU PMCG基地址去掉
    低12bit。这里的设计有点不好,使用者很难找到对应的关系 ?

  • 当想观测一个程序对应的SMMU上统计信息时我们可以, 比如这样:

  perf stat -e smmuv3_pmcg_<phys_addr_page>/tlb_miss/ <your_program>

得到程序执行过程的smmu tlb miss数目。把这里的tlb_miss换成上面perf list | grep pmcg
所示的其他事件,就可以得到其他事件的统计。

  • 实际系统上可能一个smmu下接着多个外设,只想看一个外设在smmu上统计数据可以,比如
    这样:
  perf stat -e smmuv3_pmcg_<phys_addr_page>/tlb_miss/,filter_enable=1,filter_span=0,filter_stream_id=0x75 <your_program>

上面的0x75是设备对应的stream_id,PCIe设备的话,一般就是这个设备的BDF号。
(fix me: device function number怎么表示?)

使用SMMU的PMU查看性能数据相关推荐

  1. 使用ST03N查看指定user的transaction 性能数据

    Created by Jerry Wang, last modified on Aug 04, 2014 使用tcode ST03N,双击Workload->Total, 展开User and ...

  2. adb查看手机cpu使用率_通过 adb 命令获取手机应用性能数据 (CPU、内存、流量)

    由于工作需要获取安卓手机游戏应用运行时的性能数据,上网学习了一些知识,整理记录下... 若有错误,欢迎指正:若有更好方法,感谢分享. 1. 获取CPU数据 命令:adb shell top -n -1 ...

  3. 服务器怎么查看性能,查看服务器进程性能查看

    查看服务器进程性能查看 内容精选 换一换 分析辅助软件是一款支持部署到多台服务器目标环境上,实现对整个业务集群的数据采集和优化的组件.已成功登录Java性能分析.待安装分析辅助软件的服务器已开启ssh ...

  4. 【java 性能优化实战】3 工具实践:如何获取代码性能数据?

    首先解答一下上一课时的问题.磁盘的速度这么慢,为什么 Kafka 操作磁盘,吞吐量还能那么高? 这是因为,磁盘之所以慢,主要就是慢在寻道的操作上面.Kafka 官方测试表明,这个寻道时间长达 10ms ...

  5. 通过ngx-lua来统计Nginx上的虚拟主机性能数据

    Web server调研分析 Filed under: Web Server - cmpan @ 2012-10-29 20:38:34 摘要 简单可依赖的架构首先需要有一个简单可依赖的前端WebSe ...

  6. windows下磁盘IO性能数据评测

    windows下如何查看磁盘IO性能 http://www.51testing.com/?uid-211722-action-viewspace-itemid-233892 服务器性能瓶颈如何判断.C ...

  7. linux环境安装nagiosgraph将nagios的性能数据绘制成动态图表?

    需求描述: 在安装完成nagios之后,比如有监控磁盘负载信息的,连接数的,进程数的,可以通过安装nagiosgraph软件, 将nagios的性能数据绘制成图表,可以看到一段时间内数据的变化 环境说 ...

  8. linux历史性能数据,Linux平台下如何看OS历史的性能数据

    同事电话询问Linux下一个集群内2个主机前后2天相继无响应,表现状况为ping都没响应. 因为没任何监控或其他性能数据,故需要获取历史OS性能数据. 我们知道rhel5,6下默认可以通过sar命令查 ...

  9. 查看Orcale数据里的表是否有变化

    由于我们公司一个数据库两个应用在使用,导致一个应用修改了数据库,另一个应用用的缓存而不知道有更新还是原来的结果.原来的处理方式是采用session缓存的方式,用户登出了就清空缓存,这样只需要重新登录一 ...

最新文章

  1. Linux上安装MongoDB
  2. WC2017 Day1
  3. hdu2964-Prime Bases
  4. loopback的作用
  5. PaperNotes(18)-VectorNet- Encoding HD Maps and Agent Dynamics from Vectorized Representation
  6. Bzoj4542--Hnoi2016大数
  7. 最近学习安卓中总结的一些知识点
  8. C#实现中国天气网JSON接口测试
  9. 大端小端(Big- Endian和Little-Endian)
  10. 玩转 Python 3.5 的 await/async
  11. Qt 实现Windows系统Win10 c++音量调节
  12. 2022最全知识点——RF接口自动化框架项目实战
  13. 串口转以太网产品选型指南
  14. 计算机图形学设计线宽代码,计算机图形学画圆并改变线宽.pdf
  15. 微信公众号授权登录重复登录不跳转
  16. 2023年天津天狮学院专升本专业课考试延期的通知
  17. 群体遗传学习笔记-测序技术学习
  18. 如何制作一个蓄力跳的功能
  19. vue即时通讯,一个很好用的插件
  20. 网络设备配置与管理-综合实验2

热门文章

  1. IDEA安装及破解永久版教程————鹏鹏
  2. 学CNC编程,首先要从哪里开始?
  3. 微信打开网页 提示防诈骗
  4. gg修改器修改内购_【技术分享】通过GG修改器 修改王者荣耀皮肤(美化)
  5. 第三方框架Masonry的基本使用
  6. CY3014 SLAVEFIFO
  7. MacBook 谷歌插件打包
  8. 笔记本电脑重启快捷键是什么
  9. 三器六垢_本初行者劉暢友居士浅谈如何学佛(三)
  10. h5 ios Safair下载文件自动添加.html导致文件乱码问题,ios不能使用接口播放视频的问题