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>