Meltdown漏洞对性能有多大影响?
最近ArchLinux
的内核升级加入了针对Meltdown
的补丁。正好测试一下为了这个安全性而对性能产生了多大的影响。
用了最简单的小测试代码meltdown_test.c
,测试极端情况:
#include <syscall.h>
#include <unistd.h>
#include <stdio.h>
int main(void) {
for (int i=0; i< (1<<27) ;i++){
syscall(SYS_time);
}
return 0;
}
使用相同的内核版本:4.14.12-1
。
在不启用补丁的情况下:
$ time ./meltdown_test
real 0m5.761s
user 0m2.421s
sys 0m3.340s
在启用补丁的情况下:
$ time ./meltdown_test
real 0m23.715s
user 0m11.745s
sys 0m11.834s
linux的内核补丁是通过PTI
(Page Table Isolation)实现的。如果只从测试结果看,对性能的影响还是很明显的。这个补丁,主要是增加了用户态/内核态切换的性能开销,因此,对于有频繁线程切换或系统调用的服务影响会很大, 比如mysql
,nginx
,redis
这些最常见的服务,以及服务器的文件I/O
能力等等。
个人用户来说,最好的做法就是 关闭补丁。