From owner-p4-projects@FreeBSD.ORG Mon Nov 15 23:30:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3352B16A4D1; Mon, 15 Nov 2004 23:30:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D373D16A4CE; Mon, 15 Nov 2004 23:30:43 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1CC143D1D; Mon, 15 Nov 2004 23:30:43 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAFNUgEt075673; Mon, 15 Nov 2004 23:30:43 GMT (envelope-from davidxu@freebsd.org) Message-ID: <41993C22.2060309@freebsd.org> Date: Tue, 16 Nov 2004 07:30:42 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: John Baldwin References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <200411151318.49415.jhb@FreeBSD.org> In-Reply-To: <200411151318.49415.jhb@FreeBSD.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 23:30:45 -0000 John Baldwin wrote: >On Sunday 14 November 2004 12:13 am, David Xu wrote: > > >>http://perforce.freebsd.org/chv.cgi?CH=65074 >> >>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 >> >> 1. Fix a race between signal and umtx_unlock. a waiter >> may be resumed by signal and left or exited, heavily >> loaded test causes kernel to crash. >> 2. Use distributed queue locks instead of single giant >> lock. >> >>Affected files ... >> >>.. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit >> >>Differences ... >> >>==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) >>==== >> >>@@ -49,25 +49,48 @@ >> pid_t uq_pid; /* Pid key component. */ >> }; >> >> #define UMTX_QUEUES 128 >> #define UMTX_HASH(pid, umtx) \ >>- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) >>+ ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) >> >> > >I'm curious why you changed the hash macro here? Low order bits of pointers >tend to be zero due to alignment, so I think this will result in fewer >"useful" bits and more collisions and longer chains. > > > Yeah, I orignally wanted to reduce collisions but seems got an opposited result. ;-)