On 05.02.20 09:54, Wang, Wei W wrote:> On Wednesday, February 5, 2020 4:19 PM, David Hildenbrand wrote: >> Yes, I agree with you. Yet, I am thinking about one >> (unlikely?impossible?) scenario. Can you refresh my brain why that cannot >> happen (IOW, why we don't have to wait for the host to process the >> request)? >> >> 1. Guest allocates a page and sends it to the host. >> 2. Shrinker gets active and releases that page again. >> 3. Some user in the guest allocates and modifies that page. After that, it is >> done using that page for the next hour. >> 4. The host processes the request and clears the bit in the dirty bitmap. >> 5. The guest is being migrated by the host. The modified page is not being >> migrated. > > Whenever the guest modifies a page during migration, it will be captured by the > dirty logging and the hypervisor will send the dirtied the page in the following round.Please explain why the steps I outlined don't apply esp. in the last round. Your general statement does not explain why this race can't happen. -- Thanks, David / dhildenb
On Wednesday, February 5, 2020 4:57 PM, David Hildenbrand wrote:> >> Yes, I agree with you. Yet, I am thinking about one > >> (unlikely?impossible?) scenario. Can you refresh my brain why that > >> cannot happen (IOW, why we don't have to wait for the host to process > >> the request)? > >> > >> 1. Guest allocates a page and sends it to the host. > >> 2. Shrinker gets active and releases that page again. > >> 3. Some user in the guest allocates and modifies that page. After > >> that, it is done using that page for the next hour. > >> 4. The host processes the request and clears the bit in the dirty bitmap. > >> 5. The guest is being migrated by the host. The modified page is not > >> being migrated. > > > > Whenever the guest modifies a page during migration, it will be > > captured by the dirty logging and the hypervisor will send the dirtied the > page in the following round. > > Please explain why the steps I outlined don't apply esp. in the last round. > Your general statement does not explain why this race can't happen. >The guest is stopped in the last round, thus no page will be modified at that time. Best, Wei
On 05.02.20 10:00, Wang, Wei W wrote:> On Wednesday, February 5, 2020 4:57 PM, David Hildenbrand wrote: >>>> Yes, I agree with you. Yet, I am thinking about one >>>> (unlikely?impossible?) scenario. Can you refresh my brain why that >>>> cannot happen (IOW, why we don't have to wait for the host to process >>>> the request)? >>>> >>>> 1. Guest allocates a page and sends it to the host. >>>> 2. Shrinker gets active and releases that page again. >>>> 3. Some user in the guest allocates and modifies that page. After >>>> that, it is done using that page for the next hour. >>>> 4. The host processes the request and clears the bit in the dirty bitmap. >>>> 5. The guest is being migrated by the host. The modified page is not >>>> being migrated. >>> >>> Whenever the guest modifies a page during migration, it will be >>> captured by the dirty logging and the hypervisor will send the dirtied the >> page in the following round. >> >> Please explain why the steps I outlined don't apply esp. in the last round. >> Your general statement does not explain why this race can't happen. >> > > The guest is stopped in the last round, thus no page will be modified at that time.No, that does not answer my question. Because then, obviously the guest can't do any hinting in the last round. I think I am missing something important :) 1. Guest allocates a page and sends it to the host. 2. Shrinker gets active and releases that page again. 3. Some user in the guest allocates and modifies that page. The dirty bit is set in the hypervisor. 4. The host processes the request and clears the bit in the dirty bitmap. 5. The guest is stopped and the last set of dirty pages is migrated. The modified page is not being migrated (because not marked dirty). Something between 3. and 4. has to guarantee that the page will still be migrated, what guarantees that? -- Thanks, David / dhildenb
On Wed, Feb 5, 2020 at 1:00 AM Wang, Wei W <wei.w.wang at intel.com> wrote:> On Wednesday, February 5, 2020 4:57 PM, David Hildenbrand wrote: > > >> Yes, I agree with you. Yet, I am thinking about one > > >> (unlikely?impossible?) scenario. Can you refresh my brain why that > > >> cannot happen (IOW, why we don't have to wait for the host to process > > >> the request)? > > >> > > >> 1. Guest allocates a page and sends it to the host. > > >> 2. Shrinker gets active and releases that page again. > > >> 3. Some user in the guest allocates and modifies that page. After > > >> that, it is done using that page for the next hour. > > >> 4. The host processes the request and clears the bit in the dirty > bitmap. > > >> 5. The guest is being migrated by the host. The modified page is not > > >> being migrated. > > > > > > Whenever the guest modifies a page during migration, it will be > > > captured by the dirty logging and the hypervisor will send the dirtied > the > > page in the following round. > > > > Please explain why the steps I outlined don't apply esp. in the last > round. > > Your general statement does not explain why this race can't happen. > > > > The guest is stopped in the last round, thus no page will be modified at > that time. >Isn't the hint only useful during the *first* round? After the first round if a page becomes free then we need to update the copy at the migration destination, so freeing a page that previously had contents should mark it dirty.> > Best, > Wei >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20200205/56dbe61d/attachment.html>