From: Eric Wheeler <qemu-devel@lists.ewheeler.net>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Migration without memory page transfer
Date: Thu, 26 Apr 2018 23:33:53 +0000 (UTC) [thread overview]
Message-ID: <alpine.LRH.2.11.1804262308190.12327@mail.ewheeler.net> (raw)
Hello all,
This is my first time inside of the qemu code, so your help is greatly
appreciated!
I have been experimenting with stop/start of VMs to/from a migration
stream that excludes RAM pages and let the RAM pages come from memory file
provided by the memory-backend-file called '/dev/shm/mem'.
To disable writing of memory pages to the migration stream, I've disabled
calls to ram_find_and_save_block in ram_save_iterate() and
ram_save_complete() (see patch below). Thus, the migration stream has the
"ram" SaveStateEntry section start/ends, but no pages:
qemu-system-x86_64 \
-object memory-backend-file,prealloc=no,mem-path=/dev/shm/mem,id=ram-node0,host-nodes=0,policy=bind,size=64m,share=on \
-numa node,nodeid=0,cpus=0,memdev=ram-node0\
-m 64 -vnc 0:0
Once the VM is running, I press ctrl-B to get the IPXE prompt and then
run 'kernel http://192.168.0.1/foo' to start a network request and watch
it in tcpdump.
Once the download starts, I save the migration file:
migrate "exec:cat > /dev/shm/t"
# ls -lh /dev/shm/t
-rw-r--r-- 1 root root 321K Apr 26 16:06 /dev/shm/t
Now I can kill qemu and boot it again with -incoming:
qemu-system-x86_64 \
-object memory-backend-file,prealloc=no,mem-path=/dev/shm/mem,id=ram-node0,host-nodes=0,policy=bind,size=64m,share=on \
-numa node,nodeid=0,cpus=0,memdev=ram-node0\
-m 64 -vnc 0:0 \
-incoming 'exec:cat /dev/shm/t'
It seems to work. That is, network traffic continues (http from IPXE)
which I can see from tcpdump. I can type into the console and it moves
the cursor around---but there is nothing on the screen except the blinking
text-mode cursor! I can even blindly start a new transfer in ipxe: kernel
http://192.168.0.222/foo2 and see it in tcpdump.
So what am I missing here? Is the video memory not saved to /dev/shm/mem?
Or perhaps it is saved, but VGA isn't initialized to use what is
already in /dev/shm/mem? I've tried the cirrus, std, and vmware drivers
to see if they behave differently, but the do not seem to.
Thanks for your help!
--
Eric Wheeler
diff --git a/migration/ram.c b/migration/ram.c
index 021d583..9f4bfff 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2267,9 +2267,9 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
t0 = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
i = 0;
while ((ret = qemu_file_rate_limit(f)) == 0) {
- int pages;
+ int pages = 0;
- pages = ram_find_and_save_block(rs, false);
+ if (0) pages = ram_find_and_save_block(rs, false);
/* no more pages to sent */
if (pages == 0) {
done = 1;
@@ -2338,9 +2338,9 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
/* flush all remaining blocks regardless of rate limiting */
while (true) {
- int pages;
+ int pages = 0;
- pages = ram_find_and_save_block(rs, !migration_in_colo_state());
+ if (0) pages = ram_find_and_save_block(rs, !migration_in_colo_state());
/* no more blocks to sent */
if (pages == 0) {
break;
next reply other threads:[~2018-04-26 23:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-26 23:33 Eric Wheeler [this message]
2018-04-27 2:45 ` [Qemu-devel] Migration without memory page transfer Peter Xu
2018-05-05 20:30 ` Eric Wheeler
2018-04-27 9:24 ` Dr. David Alan Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LRH.2.11.1804262308190.12327@mail.ewheeler.net \
--to=qemu-devel@lists.ewheeler.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.