]> git.ipfire.org Git - thirdparty/qemu.git/commit
migration: Support periodic RAMBlock dirty bitmap sync
authorHyman Huang <yong.huang@smartx.com>
Thu, 17 Oct 2024 06:42:54 +0000 (14:42 +0800)
committerPeter Xu <peterx@redhat.com>
Thu, 31 Oct 2024 19:48:18 +0000 (15:48 -0400)
commit52ac968ab28b2e1eee2e083f19f2a70fdece5a2e
tree9ccd48373aeb80ad9c269d5c41dac8f5459d2ff3
parent6a39ba7cab67da05b91e215142ce5781e77e5d9f
migration: Support periodic RAMBlock dirty bitmap sync

When VM is configured with huge memory, the current throttle logic
doesn't look like to scale, because migration_trigger_throttle()
is only called for each iteration, so it won't be invoked for a long
time if one iteration can take a long time.

The periodic dirty sync aims to fix the above issue by synchronizing
the ramblock from remote dirty bitmap and, when necessary, triggering
the CPU throttle multiple times during a long iteration.

This is a trade-off between synchronization overhead and CPU throttle
impact.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/f61f1b3653f2acf026901103e1c73d157d38b08f.1729146786.git.yong.huang@smartx.com
[peterx: make prev_cnt global, and reset for each migration]
Signed-off-by: Peter Xu <peterx@redhat.com>
include/sysemu/cpu-throttle.h
migration/cpu-throttle.c
migration/migration.c
migration/migration.h
migration/ram.c
migration/trace-events