在LINUX上测量TLB未命中的命令

sam*_*asa 3 linux profiling tlb

有人可以指导我测量LINUX上TLB未命中的命令吗?TLB未命中时可以考虑小页面错误吗?

Rob*_*ord 8

你可以perf用来做这件事.只要你的CPU支持它.

使用perf list以获取可用计数器的一些想法.当我拿到这个列表并为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]
Run Code Online (Sandbox Code Playgroud)

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

然后只是perf report用来查看结果.

  • 对于较旧的内核,`oprofile`也可以访问TLB未命中计数器. (2认同)

Mir*_*ici 6

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

perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses sleep 60
Run Code Online (Sandbox Code Playgroud)

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