[PATCH v2 4/4] migration: Calculate the appropriate throttle for autoconverge

2022-03-27 Thread wucy11
From: Chongyun Wu The current autoconverge algorithm does not obtain the threshold that currently requires the CPU to limit the speed through calculation, but limits the speed of the CPU through continuous attempts. Start from an initial value to limit the speed. If the migration can not be

[PATCH v2 3/4] kvm: Introduce a dirty rate calculation method based on dirty ring

2022-03-27 Thread wucy11
From: Chongyun Wu A new structure KVMDirtyRingDirtyCounter is introduced in KVMDirtyRingReaper to record the number of dirty pages within a period of time. When kvm_dirty_ring_mark_page collects dirty pages, if it finds that the current dirty pages are not duplicates, it increases the

[PATCH v2 2/4] kvm: Dirty ring autoconverge optmization for kvm_cpu_synchronize_kick_all

2022-03-27 Thread wucy11
From: Chongyun Wu Dirty ring feature need call kvm_cpu_synchronize_kick_all to flush hardware buffers into KVMslots, but when aucoverge run kvm_cpu_synchronize_kick_all calling will become more and more time consuming. This will significantly reduce the efficiency of dirty page queries,

[PATCH v2 1/4] kvm: Dynamically adjust the rate of dirty ring reaper thread

2022-03-27 Thread wucy11
From: Chongyun Wu Dynamically adjust the dirty ring collection thread to reduce the occurrence of ring full, thereby reducing the impact on customers, improving the efficiency of dirty page collection, and thus improving the migration efficiency. Implementation: 1) Define different collection

[PATCH v2 0/4] Dirty ring and auto converge optimization

2022-03-27 Thread wucy11
From: Chongyun Wu v2: -patch 1: remove patch_1 v1: -rebase to qemu/master Overview This series of patches is to optimize the performance of online migration using dirty ring and autoconverge. Mainly through the following aspects to do optimization: 1. Dynamically adjust the dirty

[PATCH v1 4/5] kvm: Introduce a dirty rate calculation method based on dirty ring

2022-03-22 Thread wucy11
From: Chongyun Wu A new structure KVMDirtyRingDirtyCounter is introduced in KVMDirtyRingReaper to record the number of dirty pages within a period of time. When kvm_dirty_ring_mark_page collects dirty pages, if it finds that the current dirty pages are not duplicates, it increases the

[PATCH v1 3/5] kvm: Dirty ring autoconverge optmization for kvm_cpu_synchronize_kick_all

2022-03-22 Thread wucy11
From: Chongyun Wu Dirty ring feature need call kvm_cpu_synchronize_kick_all to flush hardware buffers into KVMslots, but when aucoverge run kvm_cpu_synchronize_kick_all calling will become more and more time consuming. This will significantly reduce the efficiency of dirty page queries,

[PATCH v1 2/5] kvm: Dynamically adjust the rate of dirty ring reaper thread

2022-03-22 Thread wucy11
From: Chongyun Wu Dynamically adjust the dirty ring collection thread to reduce the occurrence of ring full, thereby reducing the impact on customers, improving the efficiency of dirty page collection, and thus improving the migration efficiency. Implementation: 1) Define different collection

[PATCH v1 0/5] Dirty ring and auto converge optimization

2022-03-22 Thread wucy11
From: Chongyun Wu Overview This series of patches is to optimize the performance of online migration using dirty ring and autoconverge. Mainly through the following aspects to do optimization: 1. When using the dirty ring mode to traverse each memslot to obtain dirty pages, only

[PATCH v1 5/5] migration: Calculate the appropriate throttle for autoconverge

2022-03-22 Thread wucy11
From: Chongyun Wu The current autoconverge algorithm does not obtain the threshold that currently requires the CPU to limit the speed through calculation, but limits the speed of the CPU through continuous attempts. Start from an initial value to limit the speed. If the migration can not be

[PATCH v1 1/5] kvm, memory: Optimize dirty page collection for dirty ring

2022-03-22 Thread wucy11
From: Chongyun Wu When log_sync_global of dirty ring is called, it will collect dirty pages on all cpus, including all dirty pages on memslot, so when memory_region_sync_dirty_bitmap collects dirty pages from KVM, this interface needs to be called once, instead of traversing every dirty page.