From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [RFC][PATCH] srcu: Implement call_srcu() Date: Wed, 01 Feb 2012 13:01:38 +0200 Message-ID: <4F291B92.8070402@redhat.com> References: <1328016724.2446.229.camel@twins> <4F27F0E6.1040309@redhat.com> <1328017807.2446.230.camel@twins> <20120131222447.GH2391@linux.vnet.ibm.com> <1328091749.2760.34.camel@laptop> <4F29178A.1090306@redhat.com> <4F2918D5.4050104@redhat.com> <4F291B56.30600@oss.ntt.co.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Peter Zijlstra , paulmck@linux.vnet.ibm.com, Oleg Nesterov , linux-kernel , Marcelo Tosatti , KVM list To: Takuya Yoshikawa Return-path: In-Reply-To: <4F291B56.30600@oss.ntt.co.jp> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 02/01/2012 01:00 PM, Takuya Yoshikawa wrote: > >> rcu_assign_pointer), and use atomic operations to copy and clear: >> >> word = bitmap[i] >> put_user(word) >> atomic_and(&bitmap[i], ~word) >> >> > > This kind of this was really slow IIRC. > > > How about just doing: > > take a spin_lock > copy the entire (or some portions of) bitmap locally > clear the bitmap > unlock > That means that vcpus dirtying memory also have to take that lock, and spin while the bitmap is being copied. So kvm_vm_ioctl_get_dirty_log() will become faster, at the expense of vcpus, which I think is a bad tradeoff. > write protect the dirty pages based on the copied dirty data > > copy_to_user > > > > I can show you some performance numbers, this weekend, if you like. That'll be great, numbers are better than speculation. -- error compiling committee.c: too many arguments to function