Am 08.04.2013 um 10:33 schrieb Peter Lieven <p...@kamp.de>: > > Am 05.04.2013 um 21:23 schrieb Kevin Wolf <kw...@redhat.com>: > >> Am 26.03.2013 um 10:58 hat Peter Lieven geschrieben: >>> virtually all dup pages are zero pages. remove >>> the special is_dup_page() function and use the >>> optimized buffer_find_nonzero_offset() function >>> instead. >>> >>> here buffer_find_nonzero_offset() is used directly >>> to avoid the unnecssary additional checks in >>> buffer_is_zero(). >>> >>> raw performace gain checking 1 GByte zeroed memory >>> over is_dup_page() is approx. 10-12% with SSE2 >>> and 8-10% with unsigned long arithmedtic. >>> >>> Signed-off-by: Peter Lieven <p...@kamp.de> >>> Reviewed-by: Orit Wasserman <owass...@redhat.com> >>> Reviewed-by: Eric Blake <ebl...@redhat.com> >> >> Okay, so I bisected again and this is the second patch that is involved >> in the slowness of qemu-iotests case 007. >> >
actually this might be better?!: diff --git a/exec.c b/exec.c index 786987a..334a46e 100644 --- a/exec.c +++ b/exec.c @@ -1071,6 +1071,11 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host, memory_try_enable_merging(new_block->host, size); } } + if (mem_prealloc) { + memset(new_block->host, size, 0x00); + } else { + qemu_madvise(new_block->host, size, QEMU_MADV_DONTNEED); + } new_block->length = size; /* Keep the list sorted from biggest to smallest block. */