Date: Sat, 15 Nov 2003 12:36:42 -0500 (EST) From: Daniel Eischen <eischen@vigrid.com> To: Marcel Moolenaar <marcel@xcllnt.net> Cc: davidxu@freebsd.org Subject: Re: KSE/ia64 broken Message-ID: <Pine.GSO.4.10.10311151223450.5390-100000@pcnet5.pcnet.com> In-Reply-To: <20031115031906.GA52831@dhcp01.pn.xcllnt.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 14 Nov 2003, Marcel Moolenaar wrote: > Gang, > > The following change broke KSE on ia64: > > -------- > revision 1.18 > date: 2003/11/08 06:07:04; author: davidxu; state: Exp; lines: +16 -17 > Use THR lock instead of KSE lock to avoid scheduler be blocked in spinlock. > > Reviewed by: deischen > -------- > > We seem to be clobbering the thread structure instead of writing > to the mailbox. This happens at initialization. Can it be that > the change assumes PER_KSE and doesxn't work for PER_THREAD? I _think_ this may be because rltd-elf (at least for ia64) calls malloc with the rtld lock held. I'm not sure how to test this theory. The rtld lock uses a KSE lock because it is not always called within the context of a thread. We try to be careful in libpthread to only call malloc()/free() either at initialization (when there are no threads) or within the context of a thread. This allows us to make the malloc lock (currently a spinlock) a thread-based lock. KSE locks have the disadvantage of blocking the KSE from running any other threads. So moving spinlocks to thread locks improves performance. -- Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10311151223450.5390-100000>