I intend to enable SVS by default soon. This will be done by uncommenting this
line in GENERIC:

        #options        SVS             # Separate Virtual Space

When SVS is compiled, it is automatically turned off at boot time if the CPU
vendor is not Intel. That is to say, if you use AMD, SVS will be disabled
dynamically, and you won't be affected by its performance cost.

A sysctl is now available, machdep.svs_enabled, that tells you whether SVS is
enabled. If SVS is enabled, you can turn it off at runtime, by entering:

        sysctl -w machdep.svs_enabled=0

After that, your CPU will be vulnerable to Meltdown, but its performance will
be restored to its optimal state (the one it has been running on until now).

Note however that you can't re-enable SVS once you've disabled it.

Regarding the performance impact, I did some tests on an Intel Core i5. The
performance regression depends on the workload, but build.sh should be a good
benchmark since it generates many kernel<->user transitions. Results:

        ./build.sh -j 4 kernel=GENERIC
        Without SVS: 4min 13sec
        With SVS:    4min 20sec

Which makes a 2,7% overhead. That's a pretty good result on my CPU, but I
suspect it will be more expensive on older CPUs - which, I heard, are slower
at flushing caches.

I will do several passes to review the code, but basically it is stable.


Reply via email to