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

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

有人可以指导我使用一个命令来测量 LINUX 上的 TLB 未命中吗?是否可以将次要页面错误视为(或近似)TLB 未命中?

答案1

您可以使用性能访问硬件性能计数器:

$ perf stat -e dTLB-load-misses,iTLB-load-misses /path/to/command

例如:

$ perf stat -e dTLB-load-misses,iTLB-load-misses /bin/ls > /dev/null

 Performance counter stats for '/bin/ls':

             5,775 dTLB-load-misses                                            
             1,059 iTLB-load-misses                                            

       0.001897682 seconds time elapsed

答案2

小故障和 TLB 未命中并不是很好的类比。当请求的页面位于内存中但未映射到当前页表中时,就会发生小错误。当然,小故障会与 TLB 未命中相关联(因为 TLB 条目是页表条目的快捷方式),但 TLB 未命中将由许多其他原因引起,例如硬故障或程序局部性的转换。

答案3

当页面已加载到内存中但尚未创建关联的页表条目时,会发生次要页面错误。副作用是,较小的页面错误总是会导致 TLB 未命中。另一方面,当页面的转换条目未驻留在 TLB(即高速缓存)中时,就会发生 TLB 未命中,当该 TLB 条目先前由于 TLB 容量有限而被逐出时,可能会发生这种情况。

相关内容