[Top] [All Lists]

Re: LL/SC benchmarking [was: Mipsel libc with LL/SC online anywhere?]

To: Johannes Stezenbach <>
Subject: Re: LL/SC benchmarking [was: Mipsel libc with LL/SC online anywhere?]
From: Jun Sun <>
Date: Thu, 25 Jul 2002 10:06:55 -0700
Cc: "Kevin D. Kissell" <>,
References: <00ce01c229a4$a7d4ed40$10eca8c0@grendel> <> <>
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020408
Johannes Stezenbach wrote:
On Fri, Jul 19, 2002 at 02:38:29PM +0200, Johannes Stezenbach wrote:

On Fri, Jul 12, 2002 at 03:04:07PM +0200, Kevin D. Kissell wrote:

I'm benchmarking some code that does lots of
semaphores, and with the libc from the "standard"
MIPS/SGI RH 7.1 distribution, those are done using
sysmips, in the interest of universality.

I'm working on a platform without LL/SC, an embedded system/SOC
with a NEC VR4120A CPU core. To find out the effect of sysmips
vs. emulated LL/SC vs. the branch-likely trick posted by
Kevin D. Kissell <> on Tue, 22 Jan 2002 18:16:25 +0100
I created an experimental patch for glibc-2.2.5 which allows
run-time switching of the _test_and_set() and __compare_and_swap()
implementation based on the presence of two "switch files" in /etc/.

For lack of a better benchmark I used some of the examples from
glibc-2.2.5/linuxthreads/Examples. The numbers are from the third
of three successive runs of 'time exN >/dev/null'.

I did some more benchmarking with a test application based on
gtk+-directfb ( The benchmark does not
include GUI stuff, but rather reading of lots of external data
into internal data structures (which are GLib-2.0 GObjects).
The test application has three threads, but nearly all processing
is done in the main thread.

I think that the numbers are meaningful for our type of application.

        real    1m19.358s
        user    0m28.150s
        sys     0m47.250s

LL/SC emulation:
        real    0m41.246s
        user    0m25.390s
        sys     0m12.240s

branch-likely hack (hm, still without kernel patch...):
        real    0m25.126s
        user    0m17.240s
        sys     0m2.310s


This is great stuff! Can you explain what are "real", "user", and "sys"? Also, what is your initial conclusion?


<Prev in Thread] Current Thread [Next in Thread>