最近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能力等等。

个人用户来说,最好的做法就是 关闭补丁。

标签: none

添加新评论