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>