[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 09/10] KVM: Disable manual dirty log when dirty ring enabl
From: |
Peter Xu |
Subject: |
Re: [PATCH v5 09/10] KVM: Disable manual dirty log when dirty ring enabled |
Date: |
Mon, 22 Mar 2021 12:21:44 -0400 |
On Mon, Mar 22, 2021 at 02:55:44PM +0100, Paolo Bonzini wrote:
> On 22/03/21 10:17, Keqian Zhu wrote:
> > Hi Peter,
> >
> > On 2021/3/11 4:33, Peter Xu wrote:
> > > KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 is for KVM_CLEAR_DIRTY_LOG, which is
> > > only
> > > useful for KVM_GET_DIRTY_LOG. Skip enabling it for kvm dirty ring.
> > >
> > > More importantly, KVM_DIRTY_LOG_INITIALLY_SET will not wr-protect all the
> > > pages
> > > initially, which is against how kvm dirty ring is used - there's no way
> > > for kvm
> > > dirty ring to re-protect a page before it's notified as being written
> > > first
> > > with a GFN entry in the ring! So when KVM_DIRTY_LOG_INITIALLY_SET is
> > > enabled
> > > with dirty ring, we'll see silent data loss after migration.
> > I feel a little regret that dirty ring can not work with
> > KVM_DIRTY_LOG_INITIALLY_SET ...
> > With KVM_DIRTY_LOG_INITIALLY_SET, we can speedup dirty log start. More
> > important, we can
> > enable dirty log gradually. For write fault based dirty log, it greatly
> > reduces the side
> > effect of dirty log over guest.
> >
> > I hope we can put forward another similar optimization under dirty ring
> > mode. :)
>
> Indeed, perhaps (even though KVM_GET_DIRTY_LOG does not make sense with
> dirty ring) we could allow KVM_CLEAR_DIRTY_LOG.
Right, KVM_CLEAR_DIRTY_LOG is a good interface to reuse so as to grant
userspace more flexibility to explicit wr-protect some guest pages. However
that'll need kernel reworks - obviously when I worked on the kernel part I
didn't notice this issue..
To make it a complete work, IMHO we'll also need QEMU to completely drop the
whole dirty bitmap in all the layers, then I'd expect the dirty ring idea as a
whole start to make more difference on huge vms. They all just need some more
work which should be based on this series.
Shall we make it a "TODO" though? E.g., I can add a comment here mentioning
about this issue. I still hope we can have the qemu series lands soon first,
since it'll be bigger project to fully complete it. Paolo?
Thanks,
--
Peter Xu
[PATCH v5 06/10] KVM: Simplify dirty log sync in kvm_set_phys_mem, Peter Xu, 2021/03/10
[PATCH v5 10/10] KVM: Dirty ring support, Peter Xu, 2021/03/10
[PATCH v5 07/10] KVM: Cache kvm slot dirty bitmap size, Peter Xu, 2021/03/10
Re: [PATCH v5 00/10] KVM: Dirty ring support (QEMU part), Peter Xu, 2021/03/19
Re: [PATCH v5 00/10] KVM: Dirty ring support (QEMU part), Keqian Zhu, 2021/03/22