Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Jun 2012 17:44:37 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Gianni <gianni@freebsd.org>, Alan Cox <alc@rice.edu>, Alexander Kabaev <kan@freebsd.org>, Attilio Rao <attilio@freebsd.org>, Konstantin Belousov <kib@freebsd.org>, freebsd-arch@freebsd.org, Konstantin Belousov <kostikbel@gmail.com>
Subject:   Re: Fwd: [RFC] Kernel shared variables
Message-ID:  <86haupvk4a.fsf@ds4.des.no>
In-Reply-To: <201206051008.29568.jhb@freebsd.org> (John Baldwin's message of "Tue, 5 Jun 2012 10:08:29 -0400")
References:  <CACfq090r1tWhuDkxdSZ24fwafbVKU0yduu1yV2%2BoYo%2BwwT4ipA@mail.gmail.com> <201206041053.51802.jhb@freebsd.org> <86y5o1vrer.fsf@ds4.des.no> <201206051008.29568.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin <jhb@freebsd.org> writes:
> So you call getpid() on each access to a shared resource?

I don't, but I've seen code that does, under the assumption that all the
world is Linux and getpid() is free.  Here's a sample from RHEL6 on a
3.1 GHz i5, using raise(0) as a baseline:

getpid(): 10,000,000 iterations in 24,400 ms
gettimeofday(0, 0): 10,000,000 iterations in 54,104 ms
raise(0): 10,000,000 iterations in 1,284,593 ms

The difference between the first two is due to the fact that while
getpid() just returns a constant, gettimeofday(0, 0) performs two
comparisons first.  Passing an actual struct timeval to gettimeofday()
slows it down by a factor of about 6.

(strace confirms that no system calls occur for either getpid() or
gettimeofday(0, 0))

Here is the same program running on FreeBSD 9.0-RELEASE in VirtualBox on
an otherwise idle 3.4 GHz i7:

getpid(): 10,000,000 iterations in 777,251 ms
gettimeofday(0, 0): 10,000,000 iterations in 799,808 ms
raise(0): 10,000,000 iterations in 2,142,275 ms

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86haupvk4a.fsf>