mirror of https://github.com/xemu-project/xemu.git
migration: do not overwrite zero pages
on incoming migration do not memset pages to zero if they already read as zero. this will allocate a new zero page and consume memory unnecessarily. even if we madvise a MADV_DONTNEED later this will only deallocate the memory asynchronously. Signed-off-by: Peter Lieven <pl@kamp.de> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
9ef051e553
commit
211ea74022
14
arch_init.c
14
arch_init.c
|
@ -835,14 +835,16 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
ch = qemu_get_byte(f);
|
ch = qemu_get_byte(f);
|
||||||
memset(host, ch, TARGET_PAGE_SIZE);
|
if (ch != 0 || !is_zero_page(host)) {
|
||||||
|
memset(host, ch, TARGET_PAGE_SIZE);
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
if (ch == 0 &&
|
if (ch == 0 &&
|
||||||
(!kvm_enabled() || kvm_has_sync_mmu()) &&
|
(!kvm_enabled() || kvm_has_sync_mmu()) &&
|
||||||
getpagesize() <= TARGET_PAGE_SIZE) {
|
getpagesize() <= TARGET_PAGE_SIZE) {
|
||||||
qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
|
qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
} else if (flags & RAM_SAVE_FLAG_PAGE) {
|
} else if (flags & RAM_SAVE_FLAG_PAGE) {
|
||||||
void *host;
|
void *host;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue