Date: Wed, 4 Oct 2000 18:46:00 -0700 From: Alfred Perlstein <bright@wintelcom.net> To: Bruce Evans <bde@zeta.org.au> Cc: Matt Dillon <dillon@earth.backplane.com>, Peter Wemm <peter@netplex.com.au>, Chuck Paterson <cp@bsdi.com>, John Baldwin <jhb@FreeBSD.ORG>, arch@FreeBSD.ORG, John Polstra <jdp@polstra.com>, Daniel Eischen <eischen@vigrid.com>, Greg Lehey <grog@lemis.com> Subject: Re: Mutexes and semaphores Message-ID: <20001004184559.Q27736@fw.wintelcom.net> In-Reply-To: <Pine.BSF.4.21.0010051216130.12069-100000@besplex.bde.org>; from bde@zeta.org.au on Thu, Oct 05, 2000 at 12:40:16PM %2B1100 References: <200010041639.e94GdVR24384@earth.backplane.com> <Pine.BSF.4.21.0010051216130.12069-100000@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
* Bruce Evans <bde@zeta.org.au> [001004 18:40] wrote: > On Wed, 4 Oct 2000, Matt Dillon wrote: > > [Writing reordered to reply after quoted material] > > [Peter Wemm wrote] > > > :int > > :getppid(p, uap) > > : struct proc *p; > > : struct getppid_args *uap; > > :{ > > : struct proc *parent; > > : pid_t pid; > > : > > : parent = p->p_pptr; > > : pid = parent->p_pid; > > :#ifdef SMP > > : for (;;) { > > : __asm __volatile (": : : memory"); /* mb(); on x86 */ > > : if (parent == p->p_pptr) > > : break; > > : /* lost a race, our parent died and we reparented - redo */ > > : parent = p->p_pptr; > > : pid = parent->p_pid; > > : } > > :#endif > > : p->p_retval[0] = (register_t)pid; > > : return 0; > > :} > > > This is one of the few things I really hate in the linux source base. > > This seems to be only to win getppid() benchmarks. Complications like it > might be justified in inner loops of syscalls that are called somewhat > more than once at most in normal programs. It's too hard to do things > this in the thousands of places that would be necessary to get a uniform > speedup. the idea is to reduce inter-cpu communication, lock-less systems are a terrific idea but hard to get right, we have two choices: 1) do it right and _not_ cause extra lock/cpu/bus contention 2) do it right and cause extra lock/cpu/bus contention It's my opinion that something simple like getpid shouldn't cause a locked bus cycle if at all possible. -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] "I have the heart of a child; I keep it in a jar on my desk." To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001004184559.Q27736>