qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [Qemu-commits] [COMMIT 3086844] Instead of writing


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 ~128MB
2) Live migrate to a different node
3) RSS on different node jumps to ~1GB

3.5) RSS on source node jumps to ~1GB, since reading the page instantiates the pte
I 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]