你可以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用来查看结果.
要查看整个系统的此信息,您可以使用以下行。这将记录计数器 1 分钟(60 秒)。
perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses sleep 60
Run Code Online (Sandbox Code Playgroud)
如果未命中率高于 1%,您应该考虑使用大页面。