|
|
51CTO旗下网站
|
|
移动端

1.9.2 Linux Perf_Event

《ARM嵌入式系统编程与优化》第1章Linux/ARM嵌入式平台,本章介绍如何使用GCC编译器、汇编器和连接器来编写和执行独立的汇编语言程序,以及如何将一个C语言代码和汇编语言代码合起来,以验证汇编代码子程序的正确性。本节为大家介绍Linux Perf_Event。

作者:梁元宇 译来源:机械工业出版社|2017-09-26 19:18

1.9.2 Linux Perf_Event

Linux提供了一个管理PMU的抽象层(称之为perf_event)。除了PMU接口外,perf_event也能够跟踪软件事件,例如上下文切换和页面错误。然而,在撰写本文时,perf_event在Raspberry Pi的ARM11处理器不能完全实现。附录A描述了如何修补内核来添加这个支持。

当需要比物理上所能提供的更多计数器时,perf_event将使用一种称之为多路复用的技术。这种情况下,内核启用所请求的计数器的子集,在固定时间间隔内启用不同的子集。这允许硬件计数器在用户请求要启用计数器期间对各个时期统计例子事件采样。当用户请求结果时,perf_event还将报告从用户启用计数器以来的周期数和计数器实际启用的周期数。这些值被称为启用时间和运行时间。用户可以通过缩放这两个数值之比来推断实际计数。

为了使用perf_event,用户使用名为perf_event_open的系统调用来实例化每个计数器。一旦开启,用户可以使用Posix标准化的ioctl()函数进行启用、禁用甚至复位操作,也可以使用read()函数读取状态。

打开计数器时,用户必须完善“struct perf_event_attr”结构来配置计数器。这种结构最重要的两个字段是:.type字段和.conf?ig字段。当计算硬件事件时,只有两个有效类型:PERF_TYPE_HARDWARE和PERF_TYPE_RAW。PERF_TYPE_HARDWARE是用于指定一组公共事件的独立平台机制,而PERF_TYPE_RAW允许用户指定一个特定处理器事件的编码数。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

活学活用 Ubuntu Server

活学活用 Ubuntu Server

实战直通车
共35章 | UbuntuServer

218人订阅学习

Java EE速成指南

Java EE速成指南

掌握Java核心
共30章 | 51CTO王波

83人订阅学习

Mysql DBA修炼之路

Mysql DBA修炼之路

MySQL入门到高阶
共24章 | 武凤涛

472人订阅学习

读 书 +更多

解密SEO:搜索引擎优化与网站成功战略

本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,分析搜索营...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客