[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/35] Migration thread (20121211)
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 00/35] Migration thread (20121211) |
Date: |
Tue, 11 Dec 2012 13:46:36 +0100 |
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
- [Qemu-devel] [PATCH 00/35] Migration thread (20121211),
Juan Quintela <=
- [Qemu-devel] [PATCH 01/35] split MRU ram list, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 09/35] migration: take finer locking, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 02/35] add a version number to ram_list, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 06/35] migration: stop all cpus correctly, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 05/35] migration: make qemu_fopen_ops_buffered() return void, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 04/35] buffered_file: Move from using a timer to use a thread, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 03/35] protect the ramlist with a separate mutex, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 08/35] migration: remove unfreeze logic, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 07/35] migration: make writes blocking, Juan Quintela, 2012/12/11
- [Qemu-devel] [PATCH 14/35] migration: include qemu-file.h, Juan Quintela, 2012/12/11