Date: Sat, 12 Oct 2002 12:04:57 -0700 From: Jim Pirzyk <jim@pirzyk.org> To: Tim Robbins <tjr@FreeBSD.ORG> Cc: freebsd-current@FreeBSD.ORG Subject: Re: -CURRENT running really slow under vmware2 Message-ID: <200210121204.57782.jim@pirzyk.org> In-Reply-To: <20021012005316.A42210@dilbert.robbins.dropbear.id.au> References: <200210110707.36650.jim@pirzyk.org> <20021012005316.A42210@dilbert.robbins.dropbear.id.au>
next in thread | previous in thread | raw e-mail | index | archive | help
--------------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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210121204.57782.jim>
