5

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

4

2 回答 2

13

您可以使用它perf来执行此操作。前提是你的 CPU 支持。

用于perf list了解可用的计数器。当我拿到这个列表并为 TLB(在我的 Sandy Bridge 机器上)进行 grep 时,我得到了:

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来看结果。

于 2012-02-19T17:44:55.643 回答
7

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

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

如果未命中率高于 1%,您应该考虑使用大页面

于 2016-08-18T18:59:30.450 回答