From owner-freebsd-current Sat Oct 12 12: 4:27 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D70E537B401; Sat, 12 Oct 2002 12:04:23 -0700 (PDT) Received: from pirzyk.org (dsl-65-184-181-29.telocity.com [65.184.181.29]) by mx1.FreeBSD.org (Postfix) with ESMTP id 33A4743EAA; Sat, 12 Oct 2002 12:04:23 -0700 (PDT) (envelope-from jim@pirzyk.org) Received: from snoopy (snoopy.pirzyk.org [10.26.0.4]) by pirzyk.org (8.12.3/8.12.3) with ESMTP id g9CJ1usU010772; Sat, 12 Oct 2002 12:01:57 -0700 (PDT) (envelope-from jim@pirzyk.org) From: Jim Pirzyk To: Tim Robbins Subject: Re: -CURRENT running really slow under vmware2 Date: Sat, 12 Oct 2002 12:04:57 -0700 User-Agent: KMail/1.4.3 References: <200210110707.36650.jim@pirzyk.org> <20021012005316.A42210@dilbert.robbins.dropbear.id.au> In-Reply-To: <20021012005316.A42210@dilbert.robbins.dropbear.id.au> Cc: freebsd-current@FreeBSD.ORG MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_9CUV7Z6LSNKL5YY5ETYH" Message-Id: <200210121204.57782.jim@pirzyk.org> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --------------Boundary-00=_9CUV7Z6LSNKL5YY5ETYH Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I would think we need to at least patch current for this case. Enclosed is a possible implementation. Comments? - JimP On Friday 11 October 2002 07:53 am, Tim Robbins wrote: > On Fri, Oct 11, 2002 at 07:07:36AM -0700, Jim Pirzyk wrote: > > Does anyone have experience running a recient -CURRENT as > > a vmware2 guest OS? I have tried -DP1 and a version from this > > week and both just die a slow death. I first tried to install a > > 4.6.2-RELEASE, and that worked. Then I tried to upgrade the > > system to -CURRENT via a make world (mergemaster, etc). and > > the 'make installworld' has not finished after 24 hours. The load > > goes up to ~ 5 during the install. I have tried this in multi user m= ode > > as well as in single user mode, no difference. > > > > When I install -DP1 and reboot, the system does the same thing proces= sing > > the /etc/rc* scripts and never makes multi user mode. If I boot sing= le > > user, the fsck has the same problem. > > This patch makes FreeBSD much faster under VMware by avoiding the CMPXC= HG > instruction, which VMware seems to emulate very slowly. Someone posted = it > to this list a while back, but I've forgotten who it was. I'm using it > at the moment.. it's still less than half the speed it would be on real > hardware, but it makes a big difference :-) > > (in /sys/i386/include) > > Index: atomic.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/tim/freebsd/src/sys/i386/include/atomic.h,v > retrieving revision 1.28 > diff -u -r1.28 atomic.h > --- atomic.h=0918 Jul 2002 15:56:46 -0000=091.28 > +++ atomic.h=0912 Sep 2002 08:28:12 -0000 > @@ -117,7 +117,7 @@ > > #if defined(__GNUC__) > > -#if defined(I386_CPU) > +#if defined(I386_CPU) || 1 > > static __inline int > atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) > > > I've done no benchmarks, but compiling with CPUTYPE set to something > conservative like i386 or i486 also seems to help. > > Also keep in mind that there are a bunch of debugging features enabled = by > default in GENERIC and the base system (witness, malloc() debugging etc= =2E) > that you could disable. > > > Tim --=20 --- @(#) $Id: dot.signature,v 1.10 2001/05/17 23:38:49 Jim.Pirzyk Exp $ __o jim@pirzyk.org ----------------------------------------------- _'\<,_ =20 (*)/ (*) =20 --------------Boundary-00=_9CUV7Z6LSNKL5YY5ETYH Content-Type: text/x-diff; charset="iso-8859-1"; name="vmware.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="vmware.patch" --- sys/conf/options.i386.orig Sat Oct 12 11:20:35 2002 +++ sys/conf/options.i386 Sat Oct 12 11:32:14 2002 @@ -64,6 +64,7 @@ CPU_ENABLE_SSE opt_cpu.h CPU_ATHLON_SSE_HACK opt_cpu.h CPU_DISABLE_SSE opt_cpu.h +CPU_DISABLE_CMPXFHG opt_cpu.h # The CPU type affects the endian conversion functions all over the kernel. I386_CPU opt_global.h --- sys/i386/conf/NOTES.orig Sat Oct 12 11:18:47 2002 +++ sys/i386/conf/NOTES Sat Oct 12 11:30:50 2002 @@ -142,6 +142,10 @@ # which indicates that the 15-16MB range is *definitely* not being # occupied by an ISA memory hole. # +# CPU_DISABLE_CMPXFHG disables the CMPXFHG instruction on > i386 machines. +# VmWare seems to emulate this instruction poorly, causing the guest OS to +# run very slowly. +# # NOTE 1: The options, CPU_BTB_EN, CPU_LOOP_EN, CPU_IORT, # CPU_LOOP_EN and CPU_RSTK_EN should not be used because of CPU bugs. # These options may crash your system. @@ -175,6 +179,7 @@ options CYRIX_CACHE_WORKS options CYRIX_CACHE_REALLY_WORKS #options NO_F00F_HACK +options VMWARE # # A math emulator is mandatory if you wish to run on hardware which --- sys/i386/include/atomic.h.orig Sat Oct 12 11:17:39 2002 +++ sys/i386/include/atomic.h Sat Oct 12 11:31:09 2002 @@ -117,7 +117,7 @@ #if defined(__GNUC__) -#if defined(I386_CPU) +#if defined(I386_CPU) || defined(CPU_DISABLE_CMPXFHG) static __inline int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) --------------Boundary-00=_9CUV7Z6LSNKL5YY5ETYH-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message