migration/ram.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-)
Hi Current migration code recalculates the amount of RAM each time that is needed. This calculation requires RCU and other operations. During migration we disable hot/unplug of memory, so we can store it. Notice the times difference, and specially that ram_bytes_total() don't appears anymore in the perf output. total time: 75852 ms downtime: 264 ms setup: 273 ms transferred ram: 19671939 kbytes throughput: 2132.28 mbps remaining ram: 0 kbytes total ram: 1077936904 kbytes duplicate: 265170289 pages skipped: 0 pages normal: 4316628 pages normal bytes: 17266512 kbytes dirty sync count: 4 page size: 4 kbytes multifd bytes: 17341329 kbytes pages-per-second: 1236658 precopy ram: 2330608 kbytes downtime ram: 1 kbytes 37.97% live_migration qemu-system-x86_64 [.] buffer_zero_avx512 10.42% live_migration qemu-system-x86_64 [.] ram_find_and_save_block.part.0 6.67% live_migration qemu-system-x86_64 [.] add_to_iovec 3.71% live_migration qemu-system-x86_64 [.] ram_bytes_total_common 2.79% live_migration qemu-system-x86_64 [.] qemu_ram_is_migratable 2.69% live_migration qemu-system-x86_64 [.] qemu_put_byte.part.0 2.41% live_migration qemu-system-x86_64 [.] bitmap_test_and_clear_atomic 1.55% live_migration qemu-system-x86_64 [.] qemu_put_be32 1.26% live_migration qemu-system-x86_64 [.] find_next_bit 1.07% multifdsend_0 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.07% multifdsend_13 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.06% multifdsend_6 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.05% multifdsend_2 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.04% multifdsend_15 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.03% multifdsend_12 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.02% live_migration qemu-system-x86_64 [.] migrate_ignore_shared 1.01% multifdsend_7 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.01% multifdsend_3 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 1.01% multifdsend_10 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.98% live_migration qemu-system-x86_64 [.] ram_save_iterate 0.96% multifdsend_4 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.93% multifdsend_8 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.92% multifdsend_5 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.90% multifdsend_14 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.88% multifdsend_9 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.85% multifdsend_1 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.83% multifdsend_11 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.61% live_migration qemu-system-x86_64 [.] save_zero_page_to_file.part.0 0.48% live_migration [kernel.kallsyms] [k] copy_user_enhanced_fast_string Migration status: completed total time: 70033 ms downtime: 279 ms setup: 280 ms transferred ram: 19692747 kbytes throughput: 2312.82 mbps remaining ram: 0 kbytes total ram: 1077936904 kbytes duplicate: 265164421 pages skipped: 0 pages normal: 4322415 pages normal bytes: 17289660 kbytes dirty sync count: 3 page size: 4 kbytes multifd bytes: 17362190 kbytes pages-per-second: 2523447 precopy ram: 2330555 kbytes downtime ram: 1 kbytes 43.64% live_migration qemu-system-x86_64 [.] buffer_zero_avx512 11.32% live_migration qemu-system-x86_64 [.] ram_find_and_save_block.part.0 7.60% live_migration qemu-system-x86_64 [.] add_to_iovec 2.95% live_migration qemu-system-x86_64 [.] qemu_put_byte.part.0 2.73% live_migration qemu-system-x86_64 [.] bitmap_test_and_clear_atomic 1.76% live_migration qemu-system-x86_64 [.] qemu_put_be32 1.44% live_migration qemu-system-x86_64 [.] find_next_bit 0.84% multifdsend_1 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.84% multifdsend_7 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.81% multifdsend_15 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.80% multifdsend_4 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.80% multifdsend_3 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.79% multifdsend_12 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.79% multifdsend_14 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.79% multifdsend_11 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.78% multifdsend_13 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.78% live_migration qemu-system-x86_64 [.] ram_save_iterate 0.77% multifdsend_9 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.77% multifdsend_5 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.77% multifdsend_10 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.77% multifdsend_2 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.77% multifdsend_6 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.76% multifdsend_8 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.71% multifdsend_0 [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.66% live_migration qemu-system-x86_64 [.] save_zero_page_to_file.part.0 0.62% live_migration qemu-system-x86_64 [.] qemu_ram_is_migratable 0.54% live_migration [kernel.kallsyms] [k] copy_user_enhanced_fast_string 0.51% live_migration qemu-system-x86_64 [.] qemu_put_byte Please, review. Thanks, Juan. Juan Quintela (2): migration: Split ram_bytes_total_common() in two functions migration: Calculate ram size once migration/ram.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) -- 2.35.1
© 2016 - 2024 Red Hat, Inc.