硬件性能计数器,用于计算操作系统的访问权限

时间:2012-05-12 12:44:00

标签: memory operating-system performancecounter computer-architecture

我想在运行一些工作负载时收集性能计数器。 这可以使用现有的LAPI性能计数器基础结构轻松完成。 但是,我想要更多的统计数据,如

  1. 环级别0,1,2,3
  2. 中的指令数
  3. 不同环级别的l1缓存加载请求数
  4. 环级开关的长度
  5. 所以,实际上,我希望区分操作系统和应用程序的内存访问。

    有人可以指导我如何做到这一点吗? PS:我之前没有使用性能计数器。所以,对你来说似乎有点微不足道的事情实际上可能对我有所帮助。感谢

    PS:有没有办法在不改变应用程序行为的情况下获取系统的执行跟踪和内存访问跟踪。

1 个答案:

答案 0 :(得分:3)

您可以使用perf等硬件性能计数器。

现代硬件提供硬件性能计数器,因此您的计算机很有可能具有此功能。您也可能需要为其安装内核驱动程序。 (关于ubuntu sudo apt-get对此很神奇。)

对perf的一点描述(从上面链接导入)

  

Perf是一个用于抽象的基于Linux 2.6+的系统的分析器工具   远离Linux性能测量中的CPU硬件差异   提供了一个简单的命令行界面。 Perf基于   perf_events接口由最新版本的Linux内核导出。

     

perf工具支持可测量事件列表

这些事件列在上面的链接中。

在众多活动中说,您希望获得以下<{1}}事件的统计信息

cycles 其中perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000u分别代表用户和内核。您也可以使用逗号分隔所有事件。