Before & After Under The Giant Lock
rwatson at FreeBSD.org
Sun Nov 25 12:34:57 PST 2007
On Sun, 25 Nov 2007, Christopher Chen wrote:
> On Nov 25, 2007 12:05 PM, Christopher Chen <muffaleta at gmail.com> wrote:
>> On Nov 25, 2007 3:13 AM, Robert Watson <rwatson at freebsd.org> wrote:
>>> At this point, Giant is gradually becoming a lock around the tty, newbus,
>>> usb, and msdosfs code, and we're largely at diminishing returns in terms
>>> of making improvements in parallelism through removing Giant. In FreeBSD
>>> 7, the focus was on improving parallelism rather than removing Giant, with
>>> improvements in locking primitives, the scheduler, and lock granularity.
>>> For example, most of the improvement in MySQL performance in FreeBSD 7 can
>>> be put down to a small number of changes:
>>> - Conversion to 1:1 threads from M:N threads.
>> I enjoyed reading your overview of changes from FreeBSD 6 to 7 with regards
>> to MP scalability, but I am a bit confused over this point--Doesn't the
>> user still have the choice between libthread, which is M:N, and libthr,
>> which is 1:1?
>> At some point during the 6.x days, it was considered advantageous to use
>> libthr when running MySQL. Has the project decided to go with libthread
>> after all?
>> Perhaps we're talking about entirely different things.
> My apologies. I re-read your statement and it makes sense now.
> I thought you were saying we were converting from 1:1 to M:N.
> Sorry for any confusion!
No problem -- just to be clear: in 7, users can still choose between
libpthread (m:n) and libthr (1:1), but the default is now libthr rather than
libpthread, as libthr seemed to perform better in most if not all workloads of
interest. The libthr in 7.0 is an enhanced version of the libthr that was
present in 6.x, although I don't have a list of the changes off-hand.
Robert N M Watson
University of Cambridge
More information about the freebsd-hackers