On Wed, Feb 01, 2012 at 01:01:38PM +0200, Avi Kivity wrote: > 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. get dirty log: 5634134 ns for 262144 dirty pages 5ms (for the entire operation). -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html