From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: Heavy memory_region_get_dirty() -- Re: [PATCH 0/1 v2] KVM: Alleviate mmu_lock contention during dirty logging Date: Wed, 02 May 2012 14:33:55 +0300 Message-ID: <4FA11BA3.2000605@redhat.com> References: <20120428190544.7dc2bfd281054c1fcac5a14e@gmail.com> <20120502202414.37d760fbb1135bb8acb0f0db@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: mtosatti@redhat.com, kvm@vger.kernel.org, yoshikawa.takuya@oss.ntt.co.jp, qemu-devel@nongnu.org, qemu-devel To: Takuya Yoshikawa Return-path: Received: from mx1.redhat.com ([209.132.183.28]:17036 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752658Ab2EBLeC (ORCPT ); Wed, 2 May 2012 07:34:02 -0400 In-Reply-To: <20120502202414.37d760fbb1135bb8acb0f0db@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: On 05/02/2012 02:24 PM, Takuya Yoshikawa wrote: > During checking mmu_lock contention, I noticed that QEMU's > memory_region_get_dirty() was using unexpectedly much CPU time. > > Thanks, > Takuya > > ============================= > perf top -t ${QEMU_TID} > ============================= > 51.52% qemu-system-x86_64 [.] memory_region_get_dirty > 16.73% qemu-system-x86_64 [.] ram_save_remaining > memory_region_get_dirty() is called from ram_save_remaining(). Looks like quadratic behaviour here: we send a few pages in ram_save_remaining(), then walk the entire dirty bitmap to calculate expected_time(). We should probably calculate expected_time once per iteration. -- error compiling committee.c: too many arguments to function