https://gitee.com/ijinma/hfsort
函数重排(layout)的目的在于将hot code聚合在一起,使最经常执行的代码或最需要关键执行的代码聚合在一起,形成一个更紧凑的__TEXT段
image.pngimage.png
从数据上看,函数重排对itlb的命中率影响很大
perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses -p 58029
image.pngimage.png
TLB(Translation Lookaside Buffer),专门用于改进虚拟地址到物理地址转换速度的缓存。其访问速度非常快,和寄存器相当,比L1访问还快。但是TLB并不是很大只有4k,一旦TLB miss造成的后果可比物理地址cache miss后果要严重一些,最多可能需要进行5次内存IO 【多级页表】
由此初步分析出:热点函数重排后让关键代码变的更紧凑,极大增加了TLB的缓存命中率,从而提升了CPU的运行效率,进而提升了服务的性能
网友评论