测试TLB miss 和页遍历引入的开销: 使用全系统模拟器gem5,运行大内存负载程序,会花上数周甚至数月,消耗内存是负载程序所需两倍以上。同时TLB miss 相较于其他微体系结构事件(分支错误预测,cache miss)发生的少很多,减小工作负载,不仅需要对应用程序和操作系统有深入的了解和仔细的调优,还需要改变虚拟内存行为。 威斯康辛麦迪逊的Basu等人,同时结合硬件性能计数器和内核修改,直接将真实的workload运行在真实的物理机上。 使用oprofile收集硬件性能计数器,然后准确估计出TLB miss所花时间在总执行周期的百分比。
使用Linux vmstat utility 收集虚拟内存使用情况,同时会将processes, memory, paging, block IO, traps, disks and cpu activity, 一起显示出来,如下图所示(vmstat)。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 401160 100252 1307468 0 0 5 17 49 70 0 0 100 0 0
page walk latency,在DynamoRIO 上模拟memory hierarchy of Broadwell-like processor,用应用页表转储,模拟了页遍历通过内核内部模块捕获应用程序的页,然后计算每个级别页表的访存时延得到页表遍历时延。