From owner-freebsd-arch@FreeBSD.ORG Mon Oct 27 23:34:34 2014 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B61E1EB6; Mon, 27 Oct 2014 23:34:34 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "funkthat.com", Issuer "funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 84065758; Mon, 27 Oct 2014 23:34:34 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s9RNYXVK076794 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 27 Oct 2014 16:34:33 -0700 (PDT) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s9RNYXv0076793; Mon, 27 Oct 2014 16:34:33 -0700 (PDT) (envelope-from jmg) Date: Mon, 27 Oct 2014 16:34:33 -0700 From: John-Mark Gurney To: Mateusz Guzik Subject: Re: amd64 modules still use atomics as callable functions Message-ID: <20141027233432.GR82214@funkthat.com> Mail-Followup-To: Mateusz Guzik , freebsd-arch@freebsd.org, Konstantin Belousov , Alan Cox References: <20141027224901.GC28049@dft-labs.eu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20141027224901.GC28049@dft-labs.eu> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Mon, 27 Oct 2014 16:34:33 -0700 (PDT) Cc: Alan Cox , Konstantin Belousov , freebsd-arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Oct 2014 23:34:34 -0000 Mateusz Guzik wrote this message on Mon, Oct 27, 2014 at 23:49 +0100: > Turns out several years ago the kernel was modified to provide actual > functions for atomic operations and modules are always using them. > > I propose plugging it on amd64 in head. It'd be interesting to measure the difference between making the call, and the cost of the lock prefix... On modern processors, according to instruction_tables.pdf, the lock prefix costs between 5 and 45 cycles.. It could be more on older processors... Though another references says that a function call over head is in the 7-9 cycle range, so w/o measuring, I'm not so sure this is a good idea... Originally I was in favor of this, as the number of amd64 systems that aren't SMP aware are getting rarer by the day... But, considering that many locking ops (if contended) will take a lot longer, I'm not so sure that the inline call will save you that much.. It'd be useful to see a comparision between: LOCK'd inlined LOCK'd via function call non-LOCK'd inlined -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."