|
|
|
|
移动端

1.9.2 Linux Perf_Event

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

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

【新品产上线啦】51CTO播客,随时随地,碎片化学习

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
分享:
大家都在看
猜你喜欢

读 书 +更多

SUN Solaris 9/10系统管理员认证指南

本书专门根据SUN官方的SCSA for Solaris 9&10考试大纲撰写而成,全面覆盖了SCSA for Solaris 9/10的认证考点,除此之外本书还有大量的非考...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊