【问题标题】:Command to measure TLB misses on LINUX在 LINUX 上测量 TLB 未命中的命令
【发布时间】:2012-02-17 11:04:33
【问题描述】:

有人可以指导我使用一个命令来测量 LINUX 上的 TLB 未命中吗?是否可以将轻微的页面错误视为 TLB 未命中?

【问题讨论】:

  • 我不知道; TLB 未命中深入处理器内部。页面错误不是 TLB 未命中。
  • 次要页面错误不是主要页面错误?
  • 什么CPU系列?我猜是 x86-64,但您需要为此指定处理器,因为任何解决方案都可能涉及访问 CPU 性能寄存器?
  • @Paul R:你的意思是我需要监控性能计数器。
  • @kkp: 可能 - 有些 CPU 有一个 TLB 未命中的性能寄存器,有些则没有 - 请参阅本文下的讨论:software.intel.com/en-us/articles/…

标签: linux profiling tlb


【解决方案1】:

要查看整个系统的此信息,您可以使用以下行。这将记录计数器 1 分钟(60 秒)。

perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses sleep 60

如果错过率高于 1%,您应该考虑使用 大页面

【讨论】:

    【解决方案2】:

    您可以使用perf 来执行此操作。只要你的 CPU 支持它。

    使用perf list 了解可用的计数器。当我拿到这份清单并 grep 寻找 TLB(在我的 Sandy Bridge 机器上)时,我得到了:

    rob@tartarus:~$ perf list | grep -i tlb
      dTLB-loads                                         [Hardware cache event]
      dTLB-load-misses                                   [Hardware cache event]
      dTLB-stores                                        [Hardware cache event]
      dTLB-store-misses                                  [Hardware cache event]
      dTLB-prefetches                                    [Hardware cache event]
      dTLB-prefetch-misses                               [Hardware cache event]
      iTLB-loads                                         [Hardware cache event]
      iTLB-load-misses                                   [Hardware cache event]
    

    然后您可以将此特定计数器用于:perf record -e <event0>,<event1>,..

    然后只需使用perf report 即可查看结果。

    【讨论】:

    • oprofile 还可以访问旧内核的 TLB 未命中计数器。
    • 我过去也使用过oprofile - 不幸的是,Fedora 16 中的版本落后于包含对 Sandy Bridge 的支持的版本。我不想推荐我无法测试的东西。
    猜你喜欢
    • 2015-12-11
    • 2012-03-09
    • 1970-01-01
    • 2012-05-13
    • 2014-08-18
    • 2011-03-16
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多