On 11/06/2009 02:29 AM, Anthony Liguori wrote:
Helpers are really bad. On launch, I find the fragile and hard to do
proper error handling with (but that's probably just me). But the
real problem is at runtime, if you have a 16GB guest then you have to
write-protect 4M ptes and then kvm has to tear down or write protect
(not sure which mmu notifier is called) 4M shadow ptes. Once that's
done, the guest will have to fault its way back; that's at least 4M
exits, around 10 seconds worth of cpu time to execute a couple of
syscalls.
FWIW, with large pages, it's only 8k exits which comes out to about
16ms. If nothing else, it's an argument for the important of
transparent large pages.
No, it's an argument against fork() of large programs. Transparent
large pages are very important for performance, but speeding up fork()
of large programs is not one of their reasons for existence.
In any case we don't have them yet. Will you recommend people avoid
hotplug until we have transparent large pages? And check that the qemu
is actually using them (they'll be best effort, not a guarantee) before
hotplug?
--
Do not meddle in the internals of kernels, for they are subtle and quick to
panic.