From owner-svn-src-all@FreeBSD.ORG Mon Oct 5 15:21:48 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2E3461065670; Mon, 5 Oct 2009 15:21:48 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id F324C8FC0C; Mon, 5 Oct 2009 15:21:47 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 8610646B32; Mon, 5 Oct 2009 11:21:47 -0400 (EDT) Received: from John-Baldwins-Macbook-Pro.local (localhost [IPv6:::1]) by bigwig.baldwin.cx (Postfix) with ESMTPA id 2B28B8A024; Mon, 5 Oct 2009 11:21:46 -0400 (EDT) Message-ID: <4ACA0F09.2010808@FreeBSD.org> Date: Mon, 05 Oct 2009 11:21:45 -0400 From: John Baldwin User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Alan Cox References: <200910041853.n94IrAf7082338@svn.freebsd.org> <4AC9F4F4.4030008@FreeBSD.org> <4ACA0000.2080005@cs.rice.edu> In-Reply-To: <4ACA0000.2080005@cs.rice.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 05 Oct 2009 11:21:46 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=BAYES_00,NO_RELAYS autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Alan Cox , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r197750 - head/sys/vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Oct 2009 15:21:48 -0000 Alan Cox wrote: > John Baldwin wrote: >> Alan Cox wrote: >>> Author: alc >>> Date: Sun Oct 4 18:53:10 2009 >>> New Revision: 197750 >>> URL: http://svn.freebsd.org/changeset/base/197750 >>> >>> Log: >>> Align and pad the page queue and free page queue locks so that the >>> linker >>> can't possibly place them together within the same cache line. >>> MFC after: 3 weeks >>> >>> Modified: >>> head/sys/vm/vm_page.c >>> head/sys/vm/vm_page.h >>> >>> Modified: head/sys/vm/vm_page.c >>> ============================================================================== >>> >>> --- head/sys/vm/vm_page.c Sun Oct 4 17:22:51 2009 (r197749) >>> +++ head/sys/vm/vm_page.c Sun Oct 4 18:53:10 2009 (r197750) >>> @@ -135,8 +135,8 @@ __FBSDID("$FreeBSD$"); >>> */ >>> >>> struct vpgqueues vm_page_queues[PQ_COUNT]; >>> -struct mtx vm_page_queue_mtx; >>> -struct mtx vm_page_queue_free_mtx; >>> +struct vpglocks vm_page_queue_lock; >>> +struct vpglocks vm_page_queue_free_lock; >> >> I think you can do this by just: >> >> struct mtx vm_page_queue_mtx __aligned(CACHE_LINE_SIZE); >> >> without the need for a wrapper structure. >> > > Unfortunately, no. When I compile the following example: > > int a; > int b __attribute__((aligned(16))); > int x; > int y; > int z; > > int > main(void) > { > > return (0); > } > > I get the following: > > 080495b4 A __bss_start > 080495b4 A _edata > 080495c0 b completed.4860 > 080495c4 B environ > 080495d0 B b > 080495d4 B x > 080495d8 B z > 080495dc B y > 080495e0 B a > 080495e4 A _end > > Thus, "b" is aligned as specified, but not padded to 16 bytes. Do you care what is in the padding in this case or more about just having each mutex on a separate cache line? __aligned() is fine if you don't mind the padding getting reused for something else. -- John Baldwin