From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: [PATCH] percpu_counter : add percpu_counter_add_fast() Date: Thu, 21 Oct 2010 16:18:01 -0700 Message-ID: <20101021161801.8149e2fe.akpm@linux-foundation.org> References: <1285762729-17928-1-git-send-email-david@fromorbit.com> <1285762729-17928-17-git-send-email-david@fromorbit.com> <20100929215322.ff635d3e.akpm@linux-foundation.org> <20100930061039.GX5665@dastard> <20101016075510.GH19147@amd> <1287217748.2799.68.camel@edumazet-laptop> <20101016020744.366bd9c6.akpm@linux-foundation.org> <1287221475.2799.123.camel@edumazet-laptop> <1287238754.2799.376.camel@edumazet-laptop> <20101021154333.f67fd870.akpm@linux-foundation.org> <1287701894.2607.32.camel@edumazet-laptop> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Nick Piggin , Dave Chinner , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Christoph Lameter To: Eric Dumazet Return-path: Received: from smtp1.linux-foundation.org ([140.211.169.13]:53708 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751618Ab0JUXSI (ORCPT ); Thu, 21 Oct 2010 19:18:08 -0400 In-Reply-To: <1287701894.2607.32.camel@edumazet-laptop> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, 22 Oct 2010 00:58:14 +0200 Eric Dumazet wrote: > Then 39 instructions in hot path (no lock taken) Wow, your compiler sucks. .globl __percpu_counter_add .type __percpu_counter_add, @function __percpu_counter_add: pushq %rbp # movq %rsp, %rbp #, pushq %r13 # movq %rdi, %r13 # fbc, fbc pushq %r12 # pushq %rbx # pushq %r10 # movq 96(%rdi), %rbx # .counters, pcount #APP movl %gs:cpu_number,%eax # cpu_number, pfo_ret__ #NO_APP cltq addq __per_cpu_offset(,%rax,8), %rbx # __per_cpu_offset, pcount movslq (%rbx),%rax #* pcount, tmp70 leaq (%rax,%rsi), %r12 #, count movslq %edx,%rax # batch, batch cmpq %rax, %r12 # batch, count jge .L43 #, negl %edx # batch movslq %edx,%rax # batch, tmp74 cmpq %rax, %r12 # tmp74, count jg .L45 #, .L43: movq %r13, %rdi # fbc, D.14396 call _raw_spin_lock # addq %r12, 72(%r13) # count, .count movq %r13, %rdi # fbc, D.14396 movl $0, (%rbx) #,* pcount call _raw_spin_unlock # jmp .L47 # .L45: movl %r12d, (%rbx) # count,* pcount .L47: popq %r9 # popq %rbx # popq %r12 # popq %r13 # leave ret