Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Oct 2007 09:41:25 +0800
From:      David Xu <davidxu@FreeBSD.org>
To:        Jeff Roberson <jroberson@chesapeake.net>
Cc:        arch@FreeBSD.org
Subject:   Re: Abolishing sleeps in issignal()
Message-ID:  <470C2DC5.3040601@freebsd.org>
In-Reply-To: <20071008142928.Y912@10.0.0.1>
References:  <20071008142928.Y912@10.0.0.1>

next in thread | previous in thread | raw e-mail | index | archive | help
I think the performance problem here is that while sleep queue lock is
already hash scaled, but interruptable msleep still has to pass through
a single lock, the process lock, this is a serious serialization problem 
on SMP machine, especially when machine has 4 or more cores.
Also in most most runtime, process has few signals and job controls,
process lock and unlock should be avoided by checking a thread self's
flag instead, which uses thread lock.

I had ever worked out a patch to avoid the lock contention:
http://people.freebsd.org/~davidxu/patch/PCATCH_optimize.patch

mysql benchmark shows that on dual PIII machine it can improve
performance about 1 or 2 percentage, I had not tested it on 4 core
machine.

Regards,
David Xu




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?470C2DC5.3040601>