测试环境:
- Red Hat Enterprise Linux Workstation release 6.8 (Santiago).
- Kernel level: Linux 2.6.32-696.18.7.el6.x86_64
- CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz (8 cores)
测试用例:
在pti_enabled=1和pti_enabled=0的情况下,分别读取同一个2G的虚拟机image文件100次。对该测试用例测试10次,生成性能结果比较曲线如下:
本图是在每次测试的时候都清除系统缓存(echo 3 > /proc/sys/vm/drop_caches)得到的结果
本图是在每次测试的时候都不清除系统缓存得到的结果
可以看到,在清除系统缓存的时候,meltdown fix(修复)会导致性能平均有20%的下降。在不清除系统缓存的时候,meltdown修复会导致性能平均有32%的下降。简单来看,meltdown修复平均会导致系统性能有26%的下降。而在读取image文件达到1000次的时候,性能平均下降31%。这说明I/O越密集,meltdown修复对性能的影响越显著!
原因分析:
在intel cpu上,meltdown修复对用户态和内核态引入了两套页表映射,这样,当程序在执行系统调用从用户态切换到内核态时,都需要进行页表切换,这显然会带来额外的性能开销。系统中断或异常导致的程序从用户态切换到内核态也是一样。此外,当读取文件数据时,内核还需要从内核态向用户态传送数据,这也会带来额外的性能开销。所以meltdown修复对性能的影响还是很显著的!
相关链接:http://blog.chinaunix.net/uid-23741326-id-5783282.html