[patch] Disable TSC on SMP VMs

Mike Silbersack silby at silby.com
Tue Aug 16 07:05:56 UTC 2011

The patch I referenced (and forgot to attach) is located here:


Thanks to those who pointed out my error to me. :)

Mike "Silby" Silbersack

On Tue, 16 Aug 2011, Mike Silbersack wrote:

> 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