From patchwork Thu Aug 20 17:03:38 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Michael S. Tsirkin" X-Patchwork-Id: 42971 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n7KH5DRG013530 for ; Thu, 20 Aug 2009 17:05:13 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754960AbZHTRFJ (ORCPT ); Thu, 20 Aug 2009 13:05:09 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754888AbZHTRFJ (ORCPT ); Thu, 20 Aug 2009 13:05:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:25621 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754835AbZHTRFI (ORCPT ); Thu, 20 Aug 2009 13:05:08 -0400 Received: from int-mx07.intmail.prod.int.phx2.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n7KH59wW026362; Thu, 20 Aug 2009 13:05:09 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx07.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n7KH56AQ013981; Thu, 20 Aug 2009 13:05:07 -0400 Received: from redhat.com (dhcp-0-94.tlv.redhat.com [10.35.0.94]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n7KH4wFZ006219; Thu, 20 Aug 2009 13:05:00 -0400 Date: Thu, 20 Aug 2009 20:03:38 +0300 From: "Michael S. Tsirkin" To: Or Gerlitz Cc: kvm@vger.kernel.org Subject: Re: [PATCHv3 0/2] vhost: a kernel-level virtio server Message-ID: <20090820170338.GA9014@redhat.com> References: <20090813182749.GA6585@redhat.com> <4A8BB4EF.7030403@Voltaire.com> <20090819131048.GD3080@redhat.com> <4A8C01A2.6040207@voltaire.com> <20090819134512.GA3807@redhat.com> <4A8D50EF.6010208@voltaire.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4A8D50EF.6010208@voltaire.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.20 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On Thu, Aug 20, 2009 at 04:34:39PM +0300, Or Gerlitz wrote: > Michael S. Tsirkin wrote: >> Yes. master > okay, will get testing this later next week. Any chance you can provide > some packet-per-second numbers (netperf udp stream with small packets)? > > Or. If you do, maybe you should apply the following patch on top (seems to save 2 atomics in about 50% of cases for me). --- mm: reduce atomic use on use_mm fast path When mm switched to matches that of active mm, we don't need to increment and then drop the mm count. Making that conditional reduces contention on that cache line on SMP systems. Acked-by: Andrea Arcangeli Signed-off-by: Michael S. Tsirkin -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/mm/mmu_context.c b/mm/mmu_context.c index 9989c2f..0777654 100644 --- a/mm/mmu_context.c +++ b/mm/mmu_context.c @@ -27,13 +27,16 @@ void use_mm(struct mm_struct *mm) task_lock(tsk); active_mm = tsk->active_mm; - atomic_inc(&mm->mm_count); + if (active_mm != mm) { + atomic_inc(&mm->mm_count); + tsk->active_mm = mm; + } tsk->mm = mm; - tsk->active_mm = mm; switch_mm(active_mm, mm, tsk); task_unlock(tsk); - mmdrop(active_mm); + if (active_mm != mm) + mmdrop(active_mm); } EXPORT_SYMBOL_GPL(use_mm);