Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Aug 2011 00:03:44 -0500 (CDT)
From:      Mike Silbersack <silby@silby.com>
To:        freebsd-current@freebsd.org
Cc:        jkim@freebsd.org
Subject:   [patch] Disable TSC on SMP VMs
Message-ID:  <alpine.OSX.2.00.1108152357520.26832@telemachus.local>

next in thread | raw e-mail | index | archive | help

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.OSX.2.00.1108152357520.26832>