migration: do not sent zero pages in bulk stage
during bulk stage of ram migration if a page is azero page do not send it at all.the memory at the destination reads as zero anyway.
even if there is an madvise with QEMU_MADV_DONTNEEDat the target upon receipt of a zero page I have observed...
migration: do not search dirty pages in bulk stage
avoid searching for dirty pages just increment thepage offset. all pages are dirty anyway.
Signed-off-by: Peter Lieven <pl@kamp.de>Reviewed-by: Eric Blake <eblake@redhat.com>Reviewed-by: Orit Wasserman <owasserm@redhat.com>...
migration: use XBZRLE only after bulk stage
at the beginning of migration all pages are marked dirty andin the first round a bulk migration of all pages is performed.
currently all these pages are copied to the page cache regardlessof whether they are frequently updated or not. this doesn't make sense...
buffer_is_zero: use vector optimizations if possible
performance gain on SSE2 is approx. 20-25%. altivecis not tested. performance for unsigned long arithmeticis unchanged.
Signed-off-by: Peter Lieven <pl@kamp.de>Reviewed-by: Eric Blake <eblake@redhat.com>...
bitops: unroll while loop in find_next_bit()
this patch adopts the loop unrolling idea of bitmap_is_zero() tospeed up the skipping of large areas with zeros in find_next_bit().
this routine is extensively used to find dirty pages inlive migration.
testing only the find_next_bit performance on a zeroed bitfield...
migration: search for zero instead of dup pages
virtually all dup pages are zero pages. removethe special is_dup_page() function and use theoptimized buffer_find_nonzero_offset() functioninstead.
here buffer_find_nonzero_offset() is used directlyto avoid the unnecssary additional checks in...
migration: add an indicator for bulk state of ram migration
the first round of ram transfer is special since all pagesare dirty and thus all memory pages are transferred tothe target. this patch adds a boolean variable to trackthis stage.
Signed-off-by: Peter Lieven <pl@kamp.de>...
cutils: add a function to find non-zero content in a buffer
this adds buffer_find_nonzero_offset() which is a SSE2/Altivecoptimized function that searches for non-zero content in abuffer.
the function starts full unrolling only after the first few chunks have...
savevm: Fix bugs in the VMSTATE_VBUFFER_MULTIPLY definition
The VMSTATE_BUFFER_MULTIPLY macro is misnamed - it actually specifiesa variably sized buffer with VMS_VBUFFER, so should be namedVMSTATE_VBUFFER_MULTIPLY. This patch fixes this (the macro had no current...
move vector definitions to qemu-common.h
vector optimizations will now be used at various placesnot just in is_dup_page() in arch_init.c
Signed-off-by: Peter Lieven <pl@kamp.de>Signed-off-by: Juan Quintela <quintela@redhat.com>
View all revisions | View revisions
Also available in: Atom