Memory 用于统计操作系统访问次数的硬件性能计数器

Memory 用于统计操作系统访问次数的硬件性能计数器,memory,operating-system,performancecounter,computer-architecture,Memory,Operating System,Performancecounter,Computer Architecture,我想在运行一些工作负载时收集性能计数器号。 这可以使用现有的LAPI性能计数器基础结构轻松完成。 但是,我想要更多的统计数据,比如 环级别0,1,2,3中的指令数 按不同环级别对一级缓存的加载请求数 环形液位开关的长度 所以,实际上我想要区分操作系统和应用程序的内存访问 有人能告诉我怎么做吗? PS:我以前没有使用过性能计数器。所以,对你来说可能有点琐碎的事情实际上可能会帮助我。谢谢 PS:是否有任何方法可以在不改变应用程序行为的情况下获取系统的执行跟踪和内存访问跟踪。您可以使用硬件性能计数器,

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

  • 环级别0,1,2,3中的指令数
  • 按不同环级别对一级缓存的加载请求数
  • 环形液位开关的长度
  • 所以,实际上我想要区分操作系统和应用程序的内存访问

    有人能告诉我怎么做吗? PS:我以前没有使用过性能计数器。所以,对你来说可能有点琐碎的事情实际上可能会帮助我。谢谢


    PS:是否有任何方法可以在不改变应用程序行为的情况下获取系统的执行跟踪和内存访问跟踪。

    您可以使用硬件性能计数器,如

    现代硬件提供硬件性能计数器,所以您的机器很有可能具有此功能。此外,您可能需要为它安装内核驱动程序。(在UbuntuSudo上,apt get就是这方面的魔法)

    性能的一点描述(从上面的链接导入)

    Perf是一个用于基于Linux 2.6+的系统的探查器工具,用于抽象 消除Linux性能测量和测试中CPU硬件的差异 提供了一个简单的命令行界面。性能基于 最新版本的Linux内核导出的perf_事件接口

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

    以上链接中列出了这些事件

    比如说,在许多事件中,您希望获得以下事件的
    周期的统计信息

    perf stat-e cycles:u-e cycles:k-e cycles dd if=/dev/zero of=/dev/null count=100000

    其中,
    u
    k
    分别代表用户和内核。您还可以使用逗号分隔所有事件。

    此实验中使用的cpu是什么?什么是操作系统(是现代linux)?这里使用的CPU是奔腾i5处理器,操作系统是现代linux(Ubuntu最新发行版)