Re: [PATCH RFC 00/15] KVM: Dirty ring interface

Jason Wang
2019-12-04T10:40:20Z

On 2019/11/30 上午5:34, Peter Xu wrote:
> Branch is here:https://github.com/xzpeter/linux/tree/kvm-dirty-ring
>
> Overview
> ============
>
> This is a continued work from Lei Cao<lei.cao@stratus.com> and Paolo
> on the KVM dirty ring interface. To make it simple, I'll still start
> with version 1 as RFC.
>
> The new dirty ring interface is another way to collect dirty pages for
> the virtual machine, but it is different from the existing dirty
> logging interface in a few ways, majorly:
>
> - Data format: The dirty data was in a ring format rather than a
> bitmap format, so the size of data to sync for dirty logging does
> not depend on the size of guest memory any more, but speed of
> dirtying. Also, the dirty ring is per-vcpu (currently plus
> another per-vm ring, so total ring number is N+1), while the dirty
> bitmap is per-vm.
>
> - Data copy: The sync of dirty pages does not need data copy any more,
> but instead the ring is shared between the userspace and kernel by
> page sharings (mmap() on either the vm fd or vcpu fd)
>
> - Interface: Instead of using the old KVM_GET_DIRTY_LOG,
> KVM_CLEAR_DIRTY_LOG interfaces, the new ring uses a new interface
> called KVM_RESET_DIRTY_RINGS when we want to reset the collected
> dirty pages to protected mode again (works like
> KVM_CLEAR_DIRTY_LOG, but ring based)
>
> And more.

Looks really interesting, I wonder if we can make this as a library then
we can reuse it for vhost.

Thanks