On Mon, Dec 19, 2005 at 12:34:33PM +1100, Visser, Martin wrote:
> I just "googled" for "benchmark performance linux kernel i386 versus
> i686" and found nothing of any import. I am just wondering if anyone has
> bothered doing this. It would be nice to know what the tradeoff is
> between performance and convenience of not needing to know the CPU
> architecture. 

We certainly have an idea that the primitives that the operating
system use can have vastly different implications on different x86
models; costs of things like locks and memory barriers flushing
pipelines vary wildly.  General approaches like RCU in the kernel have
addressed those types of issues (in a general sense -- we know locks
are expensive so avoid them).  We have some students currently working
on a very interesting paper measuring costs of things like atomic
increments, locks and TLB fills on different architectures.  Stay
tuned for that.  But (AFAIK) the 386 kernel doesn't take much account
of these differences across sub-architectures.

Mostly I think the sub-architecture is passed via different flags to
gcc, which can try to optimise the code.  Talking with people from SGI
who look into that sort of thing, the benefits of even a much better
compiler fall into noise compared to things like lock contention.

For your general desktop user, I doubt they're really waiting much for
the kernel no matter what version they run.  If you want to know why I
say that, I have a fairly concise example :

[EMAIL PROTECTED]:~$ ldd /usr/bin/gnome-calculator
        linux-gate.so.1 =>  (0xa000000000000000)
        libgnomeui-2.so.0 => /usr/lib/libgnomeui-2.so.0 (0x2000000000064000)
        libgnome-keyring.so.0 => /usr/lib/libgnome-keyring.so.0 
(0x2000000000214000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x200000000023c000)
        libbonoboui-2.so.0 => /usr/lib/libbonoboui-2.so.0 (0x2000000000294000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x200000000037c000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x20000000003a0000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x20000000003e8000)
        libgnomecanvas-2.so.0 => /usr/lib/libgnomecanvas-2.so.0 
(0x2000000000590000)
        libgnome-2.so.0 => /usr/lib/libgnome-2.so.0 (0x20000000005fc000)
        libesd.so.0 => /usr/lib/libesd.so.0 (0x2000000000644000)
        libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x2000000000664000)
        libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0x20000000006c0000)
        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x20000000006fc000)
        libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x2000000000d14000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x2000000000e28000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 
(0x2000000000e70000)
        libpangoxft-1.0.so.0 => /usr/lib/libpangoxft-1.0.so.0 
(0x2000000000eb0000)
        libpangox-1.0.so.0 => /usr/lib/libpangox-1.0.so.0 (0x2000000000ed0000)
        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 
(0x2000000000ef8000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x2000000000f60000)
        libgnomevfs-2.so.0 => /usr/lib/libgnomevfs-2.so.0 (0x2000000000fe0000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x20000000010bc000)
        libgnutls.so.11 => /usr/lib/libgnutls.so.11 (0x2000000001364000)
        libtasn1.so.2 => /usr/lib/libtasn1.so.2 (0x2000000001450000)
        libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0x2000000001484000)
        libnsl.so.1 => /lib/tls/libnsl.so.1 (0x200000000152c000)
        libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x2000000001568000)
        libz.so.1 => /usr/lib/libz.so.1 (0x200000000157c000)
        libresolv.so.2 => /lib/tls/libresolv.so.2 (0x20000000015b4000)
        librt.so.1 => /lib/tls/librt.so.1 (0x20000000015ec000)
        libbonobo-2.so.0 => /usr/lib/libbonobo-2.so.0 (0x200000000160c000)
        libbonobo-activation.so.4 => /usr/lib/libbonobo-activation.so.4 
(0x20000000016e0000)
        libORBitCosNaming-2.so.0 => /usr/lib/libORBitCosNaming-2.so.0 
(0x200000000171c000)
        libgconf-2.so.4 => /usr/lib/libgconf-2.so.4 (0x2000000001734000)
        libORBit-2.so.0 => /usr/lib/libORBit-2.so.0 (0x20000000017b4000)
        libpopt.so.0 => /lib/libpopt.so.0 (0x2000000001874000)
        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x2000000001894000)
        libm.so.6.1 => /lib/tls/libm.so.6.1 (0x2000000001928000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x20000000019fc000)
        libdl.so.2 => /lib/tls/libdl.so.2 (0x2000000001a14000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x2000000001a2c000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x2000000001a44000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2000000001a7c000)
        libc.so.6.1 => /lib/tls/libc.so.6.1 (0x2000000001b8c000)
        libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x2000000001e18000)
        libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x2000000001e30000)
        libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x2000000001e54000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x2000000001e68000)
        libXft.so.2 => /usr/lib/libXft.so.2 (0x2000000001ea0000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x2000000001ed4000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x2000000001fcc000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x2000000002044000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0x2000000002068000)
        /lib/ld-linux-ia64.so.2 (0x2000000000000000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x200000000208c000)

-i

Attachment: signature.asc
Description: Digital signature

-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to