DragonFlyBSD's Meltdown Fix Causing More Slowdowns Than Linux
Following the move by Linux to introduced Kernel Page Table Isolation (KPTI) to address the Meltdown vulnerability affecting Intel CPUs, DragonFlyBSD has implemented better user/kernel separation to address this issue. While the Linux performance hit overall was minor, in our tests carried out so far the DragonFlyBSD kernel changes are causing more widespread slowdowns.
Our Linux benchmarking the past several days of Linux KPTI support has found minor impact for virtual machines, Wine performance impact, and then slower I/O performance in various cases. But it hasn't been for every workload. Unfortunately for DragonFlyBSD systems, their kernel changes are causing more common performance shortfalls, including for some CPU-bound programs.
Tests this weekend were done using the DragonFlyBSD 5.1-DEVELOPMENT state as of 6 January. Tests were done on an Intel Core i7 4790K "Haswell" and Xeon E3-1245 v5 "Skylake" systems with different storage devices, etc, for getting a better idea about the performance impact.
With DragonFlyBSD 5.1, this "user/kernel separation MMU bug fix" is turned on for all Intel CPUs. Users can choose to manually enable/disable the feature via the machdep.isolated_user_pmap sysctl feature. When adding the functionality, DragonFly founder Matthew Dillon commented that system calls went from taking about 100ns to ~350ns. For overall performance he commented you shouldn't normally lose more than 5% performance while workloads heavy with system calls and interrupts may see more significant performance losses.
All of these BSD benchmarks were carried out in a fully-automated and reproducible manner using the Phoronix Test Suite. The tests are comparing the impact on two systems of machdep.isolated_user_pmap enabled and disabled.