diff options
| author | Hyman Huang <yong.huang@smartx.com> | 2024-10-17 14:42:54 +0800 |
|---|---|---|
| committer | Peter Xu <peterx@redhat.com> | 2024-10-31 15:48:18 -0400 |
| commit | 52ac968ab28b2e1eee2e083f19f2a70fdece5a2e (patch) | |
| tree | 9ccd48373aeb80ad9c269d5c41dac8f5459d2ff3 /include | |
| parent | 6a39ba7cab67da05b91e215142ce5781e77e5d9f (diff) | |
| download | focaccia-qemu-52ac968ab28b2e1eee2e083f19f2a70fdece5a2e.tar.gz focaccia-qemu-52ac968ab28b2e1eee2e083f19f2a70fdece5a2e.zip | |
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>
Diffstat (limited to 'include')
| -rw-r--r-- | include/sysemu/cpu-throttle.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/sysemu/cpu-throttle.h b/include/sysemu/cpu-throttle.h index d65bdef6d0..420702b8d3 100644 --- a/include/sysemu/cpu-throttle.h +++ b/include/sysemu/cpu-throttle.h @@ -65,4 +65,18 @@ bool cpu_throttle_active(void); */ int cpu_throttle_get_percentage(void); +/** + * cpu_throttle_dirty_sync_timer_tick: + * + * Dirty sync timer hook. + */ +void cpu_throttle_dirty_sync_timer_tick(void *opaque); + +/** + * cpu_throttle_dirty_sync_timer: + * + * Start or stop the dirty sync timer. + */ +void cpu_throttle_dirty_sync_timer(bool enable); + #endif /* SYSEMU_CPU_THROTTLE_H */ |