[patch] Disable TSC on SMP VMs
Mike Silbersack
silby at silby.com
Tue Aug 16 05:30:28 UTC 2011
Hi all,
Thanks to a lightning strike, I recently upgraded my ESXi 4.1 system from
an old Athlon X2 to a shiny new Core i5-2500K. I order to see how fast it
was, I decided to run some buildworlds. I tried my FreeBSD 9 based VM
first, and was unhappy with what I saw - many mpt timeouts were reported,
and the filesystem ended up requiring a lot of fscking. My FreeBSD 8
based VM, on the other hand, was quite happy.
After some trial and error, I determined that using the TSC as a
timecounter with the VM in SMP mode was the root cause. If I switch the
VM to one vCPU and run with the TSC, the buildworld runs fine. If I leave
it with two vCPUs and change the timecounter to ACPI, then it runs fine
too. Based on these results, I created the attached patch; it turns the
priority of the TSC down to -100 if it determines that it is running
inside a virtualized SMP environment. (I did not do testing on KVM or
qemu, but I am assuming that they probably do not have TSC emulation
perfect either.)
I'd like to get this into 9.0 so that it works reliably for people who run
it in a virtual environment on modern hardware. If someone could code
review the patch, I would greatly appreciate it.
Thanks,
Mike "Silby" Silbersack
More information about the freebsd-current
mailing list