[Top] [All Lists]

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

To: "Kevin D. Kissell" <>
Subject: Re: LL/SC benchmarking [was: Mipsel libc with LL/SC online anywhere?]
From: Johannes Stezenbach <>
Date: Thu, 25 Jul 2002 18:25:39 +0200
In-reply-to: <>
Mail-followup-to: Johannes Stezenbach <>, "Kevin D. Kissell" <>,
References: <00ce01c229a4$a7d4ed40$10eca8c0@grendel> <>
User-agent: Mutt/1.4i
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


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