Thread (59 messages) 59 messages, 6 authors, 2020-02-06

RE: Balloon pressuring page cache

From: Wang, Wei W <hidden>
Date: 2020-02-05 09:19:15
Also in: virtualization

On Wednesday, February 5, 2020 5:06 PM, David Hildenbrand wrote:
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 :)
No problem, probably need more details here:

QEMU has a dirty bitmap which indicates all the dirty pages from the previous round.
KVM has a dirty bitmap which records what pages are modified in this round.
When a new round starts, QEMU syncs the bitmap from KVM (this round always
sends the pages dirtied from the previous round).
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.
The bit will be set in KVM's bitmap, and will be synced to QEMU's bitmap when the next round starts.
4. The host processes the request and clears the bit in the dirty bitmap.
This clears the bit from the QEMU bitmap, and this page will not be sent in this round.
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).
When QEMU start the last round, it first syncs the bitmap from KVM, which includes the one set in step 3.
Then the modified page gets sent.

Best,
Wei

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help