From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 00/35] Migration thread (20121211)
Date: Tue, 11 Dec 2012 13:46:36 +0100 [thread overview]
Message-ID: <1355230031-28233-1-git-send-email-quintela@redhat.com> (raw)
Hi
Changes:
- we are back to full patch series
- we reuse save_iterate() code in complete phase
- I didn't try to change the block-migration code, it should continue
working, but has none of the optimizations.
- we split the complete phase into:
* we write some ram into the buffer
* we flush the buffer
instead of doing it in a big push
- we change the iterate phase to tell the subsystem how much free space
is in the buffer. We should be able now to use smaller buffers.
- We "could" change easily to move back to the iterate phase if the
complete phase is taking too long, is just the case of having to put
a timing test into the new loop. I didn't put it, because my
testing showed that now we are much, much better and being inside
the downtime target.
- Last patch is just to printing where the timing is spent in the
complete phase, that would be removed when I ask for a pull.
- this branch includes the patches that I sent for request sooner today.
The following changes since commit 77db8657048f233edf21e1a9ebdc30a367fbdc36:
migration: Fix madvise breakage if host and guest have different page sizes (2012-12-11 12:45:56 +0100)
are available in the git repository at:
ssh://repo.or.cz/srv/git/qemu/quintela.git thread-20121211
for you to fetch changes up to 8c109644beeb1e9d228e0b3b2fb65adad80c3b96:
Please test & comment & review, Juan.
[20121029 version]
After discussing with Anthony and Paolo, this is the minimal migration
thread support that we can do for 1.3.
- fixed all the comments (thanks eric, paolo and orit).
- buffered_file.c remains until 1.4.
- testing for vinod showed very nice results, that is why the bitmap
handling optimizations remain.
Note: Writes has become blocking, and I have to change the "remove"
the feature now in qemu-sockets.c. Checked that migration was the
only user of that feature. If new users appear, they just need to add
the socket_set_nonblock() by hand.
Please, review.
Thanks, Juan.
Juan Quintela (32):
buffered_file: Move from using a timer to use a thread
migration: make qemu_fopen_ops_buffered() return void
migration: stop all cpus correctly
migration: make writes blocking
migration: remove unfreeze logic
migration: take finer locking
buffered_file: Unfold the trick to restart generating migration data
buffered_file: don't flush on put buffer
buffered_file: unfold buffered_append in buffered_put_buffer
savevm: New save live migration method: pending
migration: include qemu-file.h
migration-fd: remove duplicate include
migration: move buffered_file.c code into migration.c
migration: move migration_fd_put_ready()
migration: Inline qemu_fopen_ops_buffered into migrate_fd_connect
migration: move migration notifier
migration: move begining stage to the migration thread
migration: Add buffered_flush error handling
migration: move exit condition to migration thread
migration: unfold rest of migrate_fd_put_ready() into thread
ram: rename last_block to last_seen_block
ram: Add last_sent_block
memory: introduce memory_region_test_and_clear_dirty
ram: Use memory_region_test_and_clear_dirty
migration: Only go to the iterate stage if there is anything to send
ram: optimize migration bitmap walking
ram: account the amount of transferred ram better
ram: refactor ram_save_block() return value
ram: add free_space parameter to save_live functions
ram: remove xbrle last_stage optimization
ram: reuse ram_save_iterate() for the complete stage
migration: print times for end phase
Paolo Bonzini (1):
split MRU ram list
Umesh Deshpande (2):
add a version number to ram_list
protect the ramlist with a separate mutex
Makefile.objs | 2 +-
arch_init.c | 241 +++++++++++++++----------------
block-migration.c | 51 ++-----
block.c | 6 +
buffered_file.c | 269 -----------------------------------
buffered_file.h | 22 ---
cpu-all.h | 13 +-
cpus.c | 17 +++
exec.c | 44 +++++-
memory.c | 16 +++
memory.h | 16 +++
migration-exec.c | 3 +-
migration-fd.c | 4 +-
migration-tcp.c | 3 +-
migration-unix.c | 3 +-
migration.c | 419 +++++++++++++++++++++++++++++++++++++++++-------------
migration.h | 4 +-
qemu-file.h | 5 -
savevm.c | 47 ++++--
sysemu.h | 3 +-
vmstate.h | 3 +-
21 files changed, 608 insertions(+), 583 deletions(-)
delete mode 100644 buffered_file.c
delete mode 100644 buffered_file.h
--
1.7.11.7
next reply other threads:[~2012-12-11 12:47 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-11 12:46 Juan Quintela [this message]
2012-12-11 12:46 ` [Qemu-devel] [PATCH 01/35] split MRU ram list Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 02/35] add a version number to ram_list Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 03/35] protect the ramlist with a separate mutex Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 04/35] buffered_file: Move from using a timer to use a thread Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 05/35] migration: make qemu_fopen_ops_buffered() return void Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 06/35] migration: stop all cpus correctly Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 07/35] migration: make writes blocking Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 08/35] migration: remove unfreeze logic Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 09/35] migration: take finer locking Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 10/35] buffered_file: Unfold the trick to restart generating migration data Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 11/35] buffered_file: don't flush on put buffer Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 12/35] buffered_file: unfold buffered_append in buffered_put_buffer Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 13/35] savevm: New save live migration method: pending Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 14/35] migration: include qemu-file.h Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 15/35] migration-fd: remove duplicate include Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 16/35] migration: move buffered_file.c code into migration.c Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 17/35] migration: move migration_fd_put_ready() Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 18/35] migration: Inline qemu_fopen_ops_buffered into migrate_fd_connect Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 19/35] migration: move migration notifier Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 20/35] migration: move begining stage to the migration thread Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 21/35] migration: Add buffered_flush error handling Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 22/35] migration: move exit condition to migration thread Juan Quintela
2012-12-11 12:46 ` [Qemu-devel] [PATCH 23/35] migration: unfold rest of migrate_fd_put_ready() into thread Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 24/35] ram: rename last_block to last_seen_block Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 25/35] ram: Add last_sent_block Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 26/35] memory: introduce memory_region_test_and_clear_dirty Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 27/35] ram: Use memory_region_test_and_clear_dirty Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 28/35] migration: Only go to the iterate stage if there is anything to send Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 29/35] ram: optimize migration bitmap walking Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 30/35] ram: account the amount of transferred ram better Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 31/35] ram: refactor ram_save_block() return value Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 32/35] ram: add free_space parameter to save_live functions Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 33/35] ram: remove xbrle last_stage optimization Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 34/35] ram: reuse ram_save_iterate() for the complete stage Juan Quintela
2012-12-11 12:47 ` [Qemu-devel] [PATCH 35/35] migration: print times for end phase Juan Quintela
2012-12-11 14:22 ` [Qemu-devel] [PATCH 00/35] Migration thread (20121211) Paolo Bonzini
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=1355230031-28233-1-git-send-email-quintela@redhat.com \
--to=quintela@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).