mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
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>
This commit is contained in:
parent
6a39ba7cab
commit
52ac968ab2
6 changed files with 98 additions and 4 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue