|
From: | Avi Kivity |
Subject: | Re: [Qemu-devel] Re: [Qemu-commits] [COMMIT 3086844] Instead of writing a zero page, madvise it away |
Date: | Mon, 22 Jun 2009 20:20:33 +0300 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090513 Fedora/3.0-2.3.beta2.fc11 Lightning/1.0pre Thunderbird/3.0b2 |
On 06/22/2009 08:03 PM, Anthony Liguori wrote:
1) Start a guest with 1024, balloon down to 128MB. RSS size is now ~128MB2) Live migrate to a different node 3) RSS on different node jumps to ~1GB3.5) RSS on source node jumps to ~1GB, since reading the page instantiates the pteI don't follow. In this case, the issue is: Surely we can do better here...For TCG, we always know when memory is dirty and we can check it atomically. So we know whether a page has changed since we knew it was last zero. We basically need a ZERO_DIRTY bit. All memory initially carries this bit and ballooning also sets the bit. During live migration, we can check the dirty bit first.
You mean, a NONZERO bit which is cleared by ballooning and set on any write. This will work naturally with the qemu dirty bytemap.
For KVM, we would have to enable dirty tracking always to keep ZERO_DIRTY up to date. Since write faults are going to happen anyway at start up, perhaps the cost of doing this wouldn't be so bad?
You need to do this on the source node. Unfortunately, there's no way to initialize the values racelessly when you start live migration without introducing a new ioctl. I'd like a more general solution rather than something that targets this specific problem.
-- error compiling committee.c: too many arguments to function
[Prev in Thread] | Current Thread | [Next in Thread] |