Message ID | 1544516693-5395-1-git-send-email-wei.w.wang@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio-balloon: free page hint support | expand |
On Tue, Dec 11, 2018 at 04:24:46PM +0800, Wei Wang wrote: > This is the deivce part implementation to add a new feature, > VIRTIO_BALLOON_F_FREE_PAGE_HINT to the virtio-balloon device. The device > receives the guest free page hints from the driver and clears the > corresponding bits in the dirty bitmap, so that those free pages are > not sent by the migration thread to the destination. For virtio bits: Reviewed-by: Michael S. Tsirkin <mst@redhat.com> I think this is primarily a migration feature so please merge through the migration tree. > *Tests > 1 Test Environment > Host: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz > Migration setup: migrate_set_speed 100G, migrate_set_downtime 400ms > > 2 Test Results (results are averaged over several repeated runs) > 2.1 Guest setup: 8G RAM, 4 vCPU > 2.1.1 Idle guest live migration time > Optimization v.s. Legacy = 620ms vs 2970ms > --> ~79% reduction > 2.1.2 Guest live migration with Linux compilation workload > (i.e. make bzImage -j4) running > 1) Live Migration Time: > Optimization v.s. Legacy = 2273ms v.s. 4502ms > --> ~50% reduction > 2) Linux Compilation Time: > Optimization v.s. Legacy = 8min42s v.s. 8min43s > --> no obvious difference > > 2.2 Guest setup: 128G RAM, 4 vCPU > 2.2.1 Idle guest live migration time > Optimization v.s. Legacy = 5294ms vs 41651ms > --> ~87% reduction > 2.2.2 Guest live migration with Linux compilation workload > 1) Live Migration Time: > Optimization v.s. Legacy = 8816ms v.s. 54201ms > --> 84% reduction > 2) Linux Compilation Time: > Optimization v.s. Legacy = 8min30s v.s. 8min36s > --> no obvious difference > > ChangeLog: > v10->v11: > migration: > - qemu_guest_free_page_hint: > - "offset >= block->used_length", instead of > "offset > block->used_length"; > - RAMState: enable the "fpo_enabled" flag, when the free page > optimization feature is used, instead of disabling ram_bulk_stage. > Please see patch 6 commit log for details. > > Previous changelog: > http://lists.nongnu.org/archive/html/qemu-devel/2018-12/msg00055.html > > Wei Wang (7): > bitmap: fix bitmap_count_one > bitmap: bitmap_count_one_with_offset > migration: use bitmap_mutex in migration_bitmap_clear_dirty > migration: API to clear bits of guest free pages from the dirty bitmap > migration/ram.c: add a notifier chain for precopy > migration/ram.c: add the free page optimization enable flag > virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT > > hw/virtio/virtio-balloon.c | 263 ++++++++++++++++++++++++ > include/hw/virtio/virtio-balloon.h | 28 ++- > include/migration/misc.h | 22 ++ > include/qemu/bitmap.h | 17 ++ > include/standard-headers/linux/virtio_balloon.h | 5 + > migration/ram.c | 121 ++++++++++- > migration/savevm.c | 15 ++ > vl.c | 1 + > 8 files changed, 466 insertions(+), 6 deletions(-) > > -- > 1.8.3.1