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 -- 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