* [Qemu-devel] Memory use with >100 virtio devices @ 2017-08-18 5:39 Alexey Kardashevskiy 2017-08-18 13:18 ` Stefan Hajnoczi 0 siblings, 1 reply; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-18 5:39 UTC (permalink / raw) To: qemu-devel@nongnu.org; +Cc: David Gibson Hi! We have received a report that qemu cannot handle hundreds of virtio devices and crashes. I tried qemu with 150 virtio-block devices, 1 CPU and and 2GB RAM (the exact command line is at the end) and found that it took more than 5.5GB resident and 9GB virtual memory. Bit weird, I tried valgrind and from what I see, most memory was lost in enormous amount of realloc()s. ~700 devices was my maximum on a 128GB host, QEMU with more than that would be killed by kernel's OOM. It does not sound like a problem which needs an urgent attention but I am still curious - is there a way to tell libc's allocator to be smarter? ==94451== Parent PID: 94138 ==94451== ==94451== ==94451== ======== SUMMARY STATISTICS ======== ==94451== ==94451== guest_insns: 17,414,575,724 ==94451== ==94451== max_live: 8,103,226,799 in 1,288,978 blocks ==94451== ==94451== tot_alloc: 9,256,734,636 in 1,474,121 blocks ==94451== ==94451== insns per allocated byte: 1 ==94451== ==94451== ==94451== ======== ORDERED BY decreasing "max-bytes-live": top 10 allocators ======== ==94451== ==94451== -------------------- 1 of 10 -------------------- ==94451== max-live: 3,805,483,008 in 77,462 blocks ==94451== tot-alloc: 3,805,483,008 in 77,462 blocks (avg size 49127.09) ==94451== deaths: 77,309, at avg age 10,068,510,919 (57.81% of prog lifetime) ==94451== acc-ratios: 0.29 rd, 0.24 wr (1,135,549,612 b-read, 950,066,280 b-written) ==94451== at 0x48920C4: malloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x4895517: realloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E7393: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x59E7757: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x3A785B: phys_map_node_reserve (exec.c:251) ==94451== by 0x3A7CE3: phys_page_set (exec.c:307) ==94451== by 0x3AAF27: register_multipage (exec.c:1345) ==94451== by 0x3AB31F: mem_add (exec.c:1376) ==94451== by 0x437F53: address_space_update_topology_pass (memory.c:855) ==94451== by 0x4382C3: address_space_update_topology (memory.c:889) ==94451== by 0x438503: memory_region_transaction_commit (memory.c:925) ==94451== by 0x43D07F: memory_region_update_container_subregions (memory.c:2136) ==94451== ==94451== -------------------- 2 of 10 -------------------- ==94451== max-live: 1,332,215,808 in 27,104 blocks ==94451== tot-alloc: 1,332,215,808 in 27,104 blocks (avg size 49152.00) ==94451== deaths: 27,104, at avg age 2,360,954,537 (13.55% of prog lifetime) ==94451== acc-ratios: 0.30 rd, 0.25 wr (399,684,736 b-read, 333,887,488 b-written) ==94451== at 0x48920C4: malloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x4895517: realloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E7393: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x59E7757: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x3A785B: phys_map_node_reserve (exec.c:251) ==94451== by 0x3A7CE3: phys_page_set (exec.c:307) ==94451== by 0x3AAF27: register_multipage (exec.c:1345) ==94451== by 0x3AB31F: mem_add (exec.c:1376) ==94451== by 0x437F53: address_space_update_topology_pass (memory.c:855) ==94451== by 0x4382C3: address_space_update_topology (memory.c:889) ==94451== by 0x438503: memory_region_transaction_commit (memory.c:925) ==94451== by 0x43D3CF: memory_region_set_enabled (memory.c:2186) ==94451== ==94451== -------------------- 3 of 10 -------------------- ==94451== max-live: 1,229,537,280 in 25,026 blocks ==94451== tot-alloc: 1,229,537,280 in 25,026 blocks (avg size 49130.39) ==94451== deaths: 25,026, at avg age 10,091,400,121 (57.94% of prog lifetime) ==94451== acc-ratios: 0.29 rd, 0.24 wr (366,871,968 b-read, 306,940,392 b-written) ==94451== at 0x48920C4: malloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x4895517: realloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E7393: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x59E7757: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x3A785B: phys_map_node_reserve (exec.c:251) ==94451== by 0x3A7CE3: phys_page_set (exec.c:307) ==94451== by 0x3AAF27: register_multipage (exec.c:1345) ==94451== by 0x3AB31F: mem_add (exec.c:1376) ==94451== by 0x437F53: address_space_update_topology_pass (memory.c:855) ==94451== by 0x4382C3: address_space_update_topology (memory.c:889) ==94451== by 0x438503: memory_region_transaction_commit (memory.c:925) ==94451== by 0x43F017: address_space_init (memory.c:2596) ==94451== ==94451== -------------------- 4 of 10 -------------------- ==94451== max-live: 314,649,600 in 150 blocks ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) ==94451== deaths: none (none of these blocks were freed) ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) ==94451== at 0x4895600: memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x48957E7: posix_memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) ==94451== by 0x9FFC17: bdrv_open (block.c:2626) ==94451== by 0xA71027: blk_new_open (block-backend.c:267) ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) ==94451== ==94451== -------------------- 5 of 10 -------------------- ==94451== max-live: 314,649,600 in 150 blocks ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) ==94451== deaths: none (none of these blocks were freed) ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) ==94451== at 0x4895600: memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x48957E7: posix_memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) ==94451== by 0x9FFC17: bdrv_open (block.c:2626) ==94451== by 0x9FEF73: bdrv_append_temp_snapshot (block.c:2336) ==94451== by 0x9FF9BF: bdrv_open_inherit (block.c:2585) ==94451== ==94451== -------------------- 6 of 10 -------------------- ==94451== max-live: 314,572,800 in 300 blocks ==94451== tot-alloc: 629,145,600 in 600 blocks (avg size 1048576.00) ==94451== deaths: 300, at avg age 755,507 (0.00% of prog lifetime) ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) ==94451== at 0x4895600: memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x48957E7: posix_memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) ==94451== by 0xA503F3: qcow2_cache_create (qcow2-cache.c:124) ==94451== by 0xA3351B: qcow2_update_options_prepare (qcow2.c:878) ==94451== by 0xA33FAF: qcow2_update_options (qcow2.c:1077) ==94451== by 0xA34D77: qcow2_do_open (qcow2.c:1358) ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) ==94451== ==94451== -------------------- 7 of 10 -------------------- ==94451== max-live: 155,589,632 in 1 blocks ==94451== tot-alloc: 155,589,632 in 1 blocks (avg size 155589632.00) ==94451== deaths: none (none of these blocks were freed) ==94451== acc-ratios: 1.00 rd, 1.00 wr (155,589,632 b-read, 155,589,632 b-written) ==94451== at 0x4895158: calloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E72DF: g_malloc0 (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x79C4D3: rom_add_file (loader.c:930) ==94451== by 0x797307: load_image_targphys_as (loader.c:153) ==94451== by 0x79725F: load_image_targphys (loader.c:139) ==94451== by 0x515707: ppc_spapr_init (spapr.c:2451) ==94451== by 0x79669B: machine_run_board_init (machine.c:760) ==94451== by 0x6F5AD3: main (vl.c:4630) ==94451== ==94451== -------------------- 8 of 10 -------------------- ==94451== max-live: 105,603,072 in 103,128 blocks ==94451== tot-alloc: 105,603,072 in 103,128 blocks (avg size 1024.00) ==94451== deaths: 103,128, at avg age 10,097,736,363 (57.98% of prog lifetime) ==94451== acc-ratios: 0.04 rd, 0.36 wr (4,761,696 b-read, 38,093,568 b-written) ==94451== at 0x48920C4: malloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x4895517: realloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E7393: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x59E7757: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x3AA99F: phys_section_add (exec.c:1275) ==94451== by 0x3AF087: dummy_section (exec.c:2644) ==94451== by 0x3AF307: mem_begin (exec.c:2680) ==94451== by 0x4384C7: memory_region_transaction_commit (memory.c:922) ==94451== by 0x43D07F: memory_region_update_container_subregions (memory.c:2136) ==94451== by 0x43D11F: memory_region_add_subregion_common (memory.c:2146) ==94451== by 0x43D187: memory_region_add_subregion (memory.c:2154) ==94451== by 0x92D63B: virtio_pci_modern_region_map (virtio-pci.c:1526) ==94451== ==94451== Aggregated access counts by offset: ==94451== ==94451== [ 0] 206256 206256 206256 206256 206256 206256 206256 206256 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 16] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 32] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 48] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 64] 206256 206256 206256 206256 206256 206256 206256 206256 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 80] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 96] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 112] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 128] 206256 206256 206256 206256 206256 206256 206256 206256 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 144] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 160] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 176] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 192] 206256 206256 206256 206256 206256 206256 206256 206256 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 208] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 224] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 240] 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 103128 ==94451== [ 256] 95400 95400 95400 95400 95400 95400 95400 95400 47700 47700 47700 47700 47700 47700 47700 47700 ==94451== [ 272] 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 ==94451== [ 288] 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 ==94451== [ 304] 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 47700 ==94451== [ 320] 90300 90300 90300 90300 90300 90300 90300 90300 45150 45150 45150 45150 45150 45150 45150 45150 ==94451== [ 336] 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 ==94451== [ 352] 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 ==94451== [ 368] 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 45150 ==94451== [ 384] 90000 90000 90000 90000 90000 90000 90000 90000 45000 45000 45000 45000 45000 45000 45000 45000 ==94451== [ 400] 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 ==94451== [ 416] 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 ==94451== [ 432] 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 45000 ==94451== [ 448] 89700 89700 89700 89700 89700 89700 89700 89700 44850 44850 44850 44850 44850 44850 44850 44850 ==94451== [ 464] 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 ==94451== [ 480] 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 ==94451== [ 496] 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 44850 ==94451== [ 512] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 528] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 544] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 560] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 576] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 592] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 608] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 624] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 640] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 656] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 672] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 688] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 704] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 720] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 736] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 752] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 768] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 784] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 800] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 816] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 832] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 848] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 864] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 880] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 896] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 912] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 928] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 944] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 960] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 976] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 992] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [1008] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== ==94451== -------------------- 9 of 10 -------------------- ==94451== max-live: 78,643,200 in 300 blocks ==94451== tot-alloc: 157,286,400 in 600 blocks (avg size 262144.00) ==94451== deaths: 300, at avg age 755,346 (0.00% of prog lifetime) ==94451== acc-ratios: 0.06 rd, 0.06 wr (9,832,800 b-read, 9,831,600 b-written) ==94451== at 0x4895600: memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x48957E7: posix_memalign (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) ==94451== by 0xA503F3: qcow2_cache_create (qcow2-cache.c:124) ==94451== by 0xA3353F: qcow2_update_options_prepare (qcow2.c:879) ==94451== by 0xA33FAF: qcow2_update_options (qcow2.c:1077) ==94451== by 0xA34D77: qcow2_do_open (qcow2.c:1358) ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) ==94451== ==94451== -------------------- 10 of 10 -------------------- ==94451== max-live: 59,473,920 in 58,080 blocks ==94451== tot-alloc: 59,473,920 in 58,080 blocks (avg size 1024.00) ==94451== deaths: 58,080, at avg age 2,365,618,267 (13.58% of prog lifetime) ==94451== acc-ratios: 0.04 rd, 0.36 wr (2,708,992 b-read, 21,671,936 b-written) ==94451== at 0x48920C4: malloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x4895517: realloc (in /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) ==94451== by 0x59E7393: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x59E7757: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) ==94451== by 0x3AA99F: phys_section_add (exec.c:1275) ==94451== by 0x3AF087: dummy_section (exec.c:2644) ==94451== by 0x3AF307: mem_begin (exec.c:2680) ==94451== by 0x4384C7: memory_region_transaction_commit (memory.c:922) ==94451== by 0x43D3CF: memory_region_set_enabled (memory.c:2186) ==94451== by 0x855E33: pci_init_bus_master (pci.c:92) ==94451== by 0x855F0B: pcibus_machine_done (pci.c:104) ==94451== by 0xB8E7D7: notifier_list_notify (notify.c:40) ==94451== ==94451== Aggregated access counts by offset: ==94451== ==94451== [ 0] 116160 116160 116160 116160 116160 116160 116160 116160 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 16] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 32] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 48] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 64] 116160 116160 116160 116160 116160 116160 116160 116160 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 80] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 96] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 112] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 128] 116160 116160 116160 116160 116160 116160 116160 116160 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 144] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 160] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 176] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 192] 116160 116160 116160 116160 116160 116160 116160 116160 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 208] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 224] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 240] 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 58080 ==94451== [ 256] 54208 54208 54208 54208 54208 54208 54208 54208 27104 27104 27104 27104 27104 27104 27104 27104 ==94451== [ 272] 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 ==94451== [ 288] 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 ==94451== [ 304] 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 27104 ==94451== [ 320] 52800 52800 52800 52800 52800 52800 52800 52800 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 336] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 352] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 368] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 384] 52800 52800 52800 52800 52800 52800 52800 52800 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 400] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 416] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 432] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 448] 52800 52800 52800 52800 52800 52800 52800 52800 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 464] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 480] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 496] 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 26400 ==94451== [ 512] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 528] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 544] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 560] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 576] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 592] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 608] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 624] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 640] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 656] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 672] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 688] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 704] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 720] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 736] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 752] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 768] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 784] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 800] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 816] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 832] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 848] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 864] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 880] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 896] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 912] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 928] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 944] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 960] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 976] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [ 992] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== [1008] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ==94451== ==94451== ==94451== ==94451== ============================================================== ==94451== ==94451== Some hints: (see --help for command line option details): ==94451== ==94451== * summary stats for whole program are at the top of this output ==94451== ==94451== * --show-top-n= controls how many alloc points are shown. ==94451== You probably want to set it much higher than ==94451== the default value (10) ==94451== ==94451== * --sort-by= specifies the sort key for output. ==94451== See --help for details. ==94451== ==94451== * Each allocation stack, by default 12 frames, counts as ==94451== a separate alloc point. This causes the data to be spread out ==94451== over far too many alloc points. I strongly suggest using ==94451== --num-callers=4 or some such, to reduce the spreading. ==94451== The command line: valgrind --tool=exp-dhat --log-file=./qemu-vg-dhat.log --tool=memcheck \ --log-file=./qemu-vg-memcheck.log --error-limit=no \ --run-libc-freeres=yes --tool=massif \ --massif-out-file=./qemu-vg-massiv.out \ ./qemu-mtrace/ppc64-softmmu/qemu-system-ppc64 -nodefaults \ -chardev stdio,id=STDIO0,signal=off,mux=on \ -device spapr-vty,id=svty0,chardev=STDIO0,reg=0x71000100 \ -mon id=MON0,chardev=STDIO0,mode=readline -nographic -vga none -m 2G \ -smp 1 \ -kernel /home/aik/t/vml4120le \ -initrd /home/aik/t/le.cpio -snapshot \ -device pci-bridge,id=pci.1,bus=pci.0,addr=1.0,chassis_nr=1 \ -device pci-bridge,id=pci.2,bus=pci.0,addr=2.0,chassis_nr=2 \ -device pci-bridge,id=pci.3,bus=pci.0,addr=3.0,chassis_nr=3 \ -device pci-bridge,id=pci.4,bus=pci.0,addr=4.0,chassis_nr=4 \ -device pci-bridge,id=pci.5,bus=pci.0,addr=5.0,chassis_nr=5 \ -device pci-bridge,id=pci.6,bus=pci.0,addr=6.0,chassis_nr=6 \ -device pci-bridge,id=pci.7,bus=pci.0,addr=7.0,chassis_nr=7 \ -device pci-bridge,id=pci.8,bus=pci.1,addr=1.0,chassis_nr=8 \ -drive id=DRIVE0,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk0,drive=DRIVE0,bus=pci.8,addr=1.0 \ -drive id=DRIVE1,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk1,drive=DRIVE1,bus=pci.8,addr=2.0 \ -drive id=DRIVE2,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk2,drive=DRIVE2,bus=pci.8,addr=3.0 \ -drive id=DRIVE3,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk3,drive=DRIVE3,bus=pci.8,addr=4.0 \ -drive id=DRIVE4,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk4,drive=DRIVE4,bus=pci.8,addr=5.0 \ -drive id=DRIVE5,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk5,drive=DRIVE5,bus=pci.8,addr=6.0 \ -drive id=DRIVE6,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk6,drive=DRIVE6,bus=pci.8,addr=7.0 \ -drive id=DRIVE7,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk7,drive=DRIVE7,bus=pci.8,addr=8.0 \ -device pci-bridge,id=pci.9,bus=pci.1,addr=2.0,chassis_nr=9 \ -drive id=DRIVE8,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk8,drive=DRIVE8,bus=pci.9,addr=1.0 \ -drive id=DRIVE9,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk9,drive=DRIVE9,bus=pci.9,addr=2.0 \ -drive id=DRIVE10,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk10,drive=DRIVE10,bus=pci.9,addr=3.0 \ -drive id=DRIVE11,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk11,drive=DRIVE11,bus=pci.9,addr=4.0 \ -drive id=DRIVE12,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk12,drive=DRIVE12,bus=pci.9,addr=5.0 \ -drive id=DRIVE13,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk13,drive=DRIVE13,bus=pci.9,addr=6.0 \ -drive id=DRIVE14,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk14,drive=DRIVE14,bus=pci.9,addr=7.0 \ -drive id=DRIVE15,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk15,drive=DRIVE15,bus=pci.9,addr=8.0 \ -device pci-bridge,id=pci.10,bus=pci.1,addr=3.0,chassis_nr=10 \ -drive id=DRIVE16,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk16,drive=DRIVE16,bus=pci.10,addr=1.0 \ -drive id=DRIVE17,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk17,drive=DRIVE17,bus=pci.10,addr=2.0 \ -drive id=DRIVE18,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk18,drive=DRIVE18,bus=pci.10,addr=3.0 \ -drive id=DRIVE19,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk19,drive=DRIVE19,bus=pci.10,addr=4.0 \ -drive id=DRIVE20,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk20,drive=DRIVE20,bus=pci.10,addr=5.0 \ -drive id=DRIVE21,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk21,drive=DRIVE21,bus=pci.10,addr=6.0 \ -drive id=DRIVE22,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk22,drive=DRIVE22,bus=pci.10,addr=7.0 \ -drive id=DRIVE23,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk23,drive=DRIVE23,bus=pci.10,addr=8.0 \ -device pci-bridge,id=pci.11,bus=pci.1,addr=4.0,chassis_nr=11 \ -drive id=DRIVE24,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk24,drive=DRIVE24,bus=pci.11,addr=1.0 \ -drive id=DRIVE25,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk25,drive=DRIVE25,bus=pci.11,addr=2.0 \ -drive id=DRIVE26,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk26,drive=DRIVE26,bus=pci.11,addr=3.0 \ -drive id=DRIVE27,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk27,drive=DRIVE27,bus=pci.11,addr=4.0 \ -drive id=DRIVE28,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk28,drive=DRIVE28,bus=pci.11,addr=5.0 \ -drive id=DRIVE29,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk29,drive=DRIVE29,bus=pci.11,addr=6.0 \ -drive id=DRIVE30,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk30,drive=DRIVE30,bus=pci.11,addr=7.0 \ -drive id=DRIVE31,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk31,drive=DRIVE31,bus=pci.11,addr=8.0 \ -device pci-bridge,id=pci.12,bus=pci.1,addr=5.0,chassis_nr=12 \ -drive id=DRIVE32,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk32,drive=DRIVE32,bus=pci.12,addr=1.0 \ -drive id=DRIVE33,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk33,drive=DRIVE33,bus=pci.12,addr=2.0 \ -drive id=DRIVE34,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk34,drive=DRIVE34,bus=pci.12,addr=3.0 \ -drive id=DRIVE35,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk35,drive=DRIVE35,bus=pci.12,addr=4.0 \ -drive id=DRIVE36,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk36,drive=DRIVE36,bus=pci.12,addr=5.0 \ -drive id=DRIVE37,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk37,drive=DRIVE37,bus=pci.12,addr=6.0 \ -drive id=DRIVE38,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk38,drive=DRIVE38,bus=pci.12,addr=7.0 \ -drive id=DRIVE39,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk39,drive=DRIVE39,bus=pci.12,addr=8.0 \ -device pci-bridge,id=pci.13,bus=pci.1,addr=6.0,chassis_nr=13 \ -drive id=DRIVE40,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk40,drive=DRIVE40,bus=pci.13,addr=1.0 \ -drive id=DRIVE41,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk41,drive=DRIVE41,bus=pci.13,addr=2.0 \ -drive id=DRIVE42,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk42,drive=DRIVE42,bus=pci.13,addr=3.0 \ -drive id=DRIVE43,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk43,drive=DRIVE43,bus=pci.13,addr=4.0 \ -drive id=DRIVE44,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk44,drive=DRIVE44,bus=pci.13,addr=5.0 \ -drive id=DRIVE45,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk45,drive=DRIVE45,bus=pci.13,addr=6.0 \ -drive id=DRIVE46,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk46,drive=DRIVE46,bus=pci.13,addr=7.0 \ -drive id=DRIVE47,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk47,drive=DRIVE47,bus=pci.13,addr=8.0 \ -device pci-bridge,id=pci.14,bus=pci.1,addr=7.0,chassis_nr=14 \ -drive id=DRIVE48,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk48,drive=DRIVE48,bus=pci.14,addr=1.0 \ -drive id=DRIVE49,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk49,drive=DRIVE49,bus=pci.14,addr=2.0 \ -drive id=DRIVE50,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk50,drive=DRIVE50,bus=pci.14,addr=3.0 \ -drive id=DRIVE51,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk51,drive=DRIVE51,bus=pci.14,addr=4.0 \ -drive id=DRIVE52,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk52,drive=DRIVE52,bus=pci.14,addr=5.0 \ -drive id=DRIVE53,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk53,drive=DRIVE53,bus=pci.14,addr=6.0 \ -drive id=DRIVE54,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk54,drive=DRIVE54,bus=pci.14,addr=7.0 \ -drive id=DRIVE55,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk55,drive=DRIVE55,bus=pci.14,addr=8.0 \ -device pci-bridge,id=pci.15,bus=pci.2,addr=1.0,chassis_nr=15 \ -drive id=DRIVE56,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk56,drive=DRIVE56,bus=pci.15,addr=1.0 \ -drive id=DRIVE57,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk57,drive=DRIVE57,bus=pci.15,addr=2.0 \ -drive id=DRIVE58,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk58,drive=DRIVE58,bus=pci.15,addr=3.0 \ -drive id=DRIVE59,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk59,drive=DRIVE59,bus=pci.15,addr=4.0 \ -drive id=DRIVE60,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk60,drive=DRIVE60,bus=pci.15,addr=5.0 \ -drive id=DRIVE61,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk61,drive=DRIVE61,bus=pci.15,addr=6.0 \ -drive id=DRIVE62,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk62,drive=DRIVE62,bus=pci.15,addr=7.0 \ -drive id=DRIVE63,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk63,drive=DRIVE63,bus=pci.15,addr=8.0 \ -device pci-bridge,id=pci.16,bus=pci.2,addr=2.0,chassis_nr=16 \ -drive id=DRIVE64,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk64,drive=DRIVE64,bus=pci.16,addr=1.0 \ -drive id=DRIVE65,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk65,drive=DRIVE65,bus=pci.16,addr=2.0 \ -drive id=DRIVE66,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk66,drive=DRIVE66,bus=pci.16,addr=3.0 \ -drive id=DRIVE67,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk67,drive=DRIVE67,bus=pci.16,addr=4.0 \ -drive id=DRIVE68,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk68,drive=DRIVE68,bus=pci.16,addr=5.0 \ -drive id=DRIVE69,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk69,drive=DRIVE69,bus=pci.16,addr=6.0 \ -drive id=DRIVE70,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk70,drive=DRIVE70,bus=pci.16,addr=7.0 \ -drive id=DRIVE71,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk71,drive=DRIVE71,bus=pci.16,addr=8.0 \ -device pci-bridge,id=pci.17,bus=pci.2,addr=3.0,chassis_nr=17 \ -drive id=DRIVE72,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk72,drive=DRIVE72,bus=pci.17,addr=1.0 \ -drive id=DRIVE73,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk73,drive=DRIVE73,bus=pci.17,addr=2.0 \ -drive id=DRIVE74,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk74,drive=DRIVE74,bus=pci.17,addr=3.0 \ -drive id=DRIVE75,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk75,drive=DRIVE75,bus=pci.17,addr=4.0 \ -drive id=DRIVE76,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk76,drive=DRIVE76,bus=pci.17,addr=5.0 \ -drive id=DRIVE77,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk77,drive=DRIVE77,bus=pci.17,addr=6.0 \ -drive id=DRIVE78,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk78,drive=DRIVE78,bus=pci.17,addr=7.0 \ -drive id=DRIVE79,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk79,drive=DRIVE79,bus=pci.17,addr=8.0 \ -device pci-bridge,id=pci.18,bus=pci.2,addr=4.0,chassis_nr=18 \ -drive id=DRIVE80,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk80,drive=DRIVE80,bus=pci.18,addr=1.0 \ -drive id=DRIVE81,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk81,drive=DRIVE81,bus=pci.18,addr=2.0 \ -drive id=DRIVE82,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk82,drive=DRIVE82,bus=pci.18,addr=3.0 \ -drive id=DRIVE83,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk83,drive=DRIVE83,bus=pci.18,addr=4.0 \ -drive id=DRIVE84,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk84,drive=DRIVE84,bus=pci.18,addr=5.0 \ -drive id=DRIVE85,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk85,drive=DRIVE85,bus=pci.18,addr=6.0 \ -drive id=DRIVE86,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk86,drive=DRIVE86,bus=pci.18,addr=7.0 \ -drive id=DRIVE87,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk87,drive=DRIVE87,bus=pci.18,addr=8.0 \ -device pci-bridge,id=pci.19,bus=pci.2,addr=5.0,chassis_nr=19 \ -drive id=DRIVE88,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk88,drive=DRIVE88,bus=pci.19,addr=1.0 \ -drive id=DRIVE89,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk89,drive=DRIVE89,bus=pci.19,addr=2.0 \ -drive id=DRIVE90,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk90,drive=DRIVE90,bus=pci.19,addr=3.0 \ -drive id=DRIVE91,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk91,drive=DRIVE91,bus=pci.19,addr=4.0 \ -drive id=DRIVE92,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk92,drive=DRIVE92,bus=pci.19,addr=5.0 \ -drive id=DRIVE93,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk93,drive=DRIVE93,bus=pci.19,addr=6.0 \ -drive id=DRIVE94,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk94,drive=DRIVE94,bus=pci.19,addr=7.0 \ -drive id=DRIVE95,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk95,drive=DRIVE95,bus=pci.19,addr=8.0 \ -device pci-bridge,id=pci.20,bus=pci.2,addr=6.0,chassis_nr=20 \ -drive id=DRIVE96,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk96,drive=DRIVE96,bus=pci.20,addr=1.0 \ -drive id=DRIVE97,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk97,drive=DRIVE97,bus=pci.20,addr=2.0 \ -drive id=DRIVE98,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk98,drive=DRIVE98,bus=pci.20,addr=3.0 \ -drive id=DRIVE99,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk99,drive=DRIVE99,bus=pci.20,addr=4.0 \ -drive id=DRIVE100,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk100,drive=DRIVE100,bus=pci.20,addr=5.0 \ -drive id=DRIVE101,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk101,drive=DRIVE101,bus=pci.20,addr=6.0 \ -drive id=DRIVE102,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk102,drive=DRIVE102,bus=pci.20,addr=7.0 \ -drive id=DRIVE103,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk103,drive=DRIVE103,bus=pci.20,addr=8.0 \ -device pci-bridge,id=pci.21,bus=pci.2,addr=7.0,chassis_nr=21 \ -drive id=DRIVE104,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk104,drive=DRIVE104,bus=pci.21,addr=1.0 \ -drive id=DRIVE105,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk105,drive=DRIVE105,bus=pci.21,addr=2.0 \ -drive id=DRIVE106,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk106,drive=DRIVE106,bus=pci.21,addr=3.0 \ -drive id=DRIVE107,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk107,drive=DRIVE107,bus=pci.21,addr=4.0 \ -drive id=DRIVE108,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk108,drive=DRIVE108,bus=pci.21,addr=5.0 \ -drive id=DRIVE109,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk109,drive=DRIVE109,bus=pci.21,addr=6.0 \ -drive id=DRIVE110,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk110,drive=DRIVE110,bus=pci.21,addr=7.0 \ -drive id=DRIVE111,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk111,drive=DRIVE111,bus=pci.21,addr=8.0 \ -device pci-bridge,id=pci.22,bus=pci.3,addr=1.0,chassis_nr=22 \ -drive id=DRIVE112,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk112,drive=DRIVE112,bus=pci.22,addr=1.0 \ -drive id=DRIVE113,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk113,drive=DRIVE113,bus=pci.22,addr=2.0 \ -drive id=DRIVE114,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk114,drive=DRIVE114,bus=pci.22,addr=3.0 \ -drive id=DRIVE115,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk115,drive=DRIVE115,bus=pci.22,addr=4.0 \ -drive id=DRIVE116,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk116,drive=DRIVE116,bus=pci.22,addr=5.0 \ -drive id=DRIVE117,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk117,drive=DRIVE117,bus=pci.22,addr=6.0 \ -drive id=DRIVE118,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk118,drive=DRIVE118,bus=pci.22,addr=7.0 \ -drive id=DRIVE119,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk119,drive=DRIVE119,bus=pci.22,addr=8.0 \ -device pci-bridge,id=pci.23,bus=pci.3,addr=2.0,chassis_nr=23 \ -drive id=DRIVE120,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk120,drive=DRIVE120,bus=pci.23,addr=1.0 \ -drive id=DRIVE121,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk121,drive=DRIVE121,bus=pci.23,addr=2.0 \ -drive id=DRIVE122,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk122,drive=DRIVE122,bus=pci.23,addr=3.0 \ -drive id=DRIVE123,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk123,drive=DRIVE123,bus=pci.23,addr=4.0 \ -drive id=DRIVE124,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk124,drive=DRIVE124,bus=pci.23,addr=5.0 \ -drive id=DRIVE125,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk125,drive=DRIVE125,bus=pci.23,addr=6.0 \ -drive id=DRIVE126,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk126,drive=DRIVE126,bus=pci.23,addr=7.0 \ -drive id=DRIVE127,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk127,drive=DRIVE127,bus=pci.23,addr=8.0 \ -device pci-bridge,id=pci.24,bus=pci.3,addr=3.0,chassis_nr=24 \ -drive id=DRIVE128,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk128,drive=DRIVE128,bus=pci.24,addr=1.0 \ -drive id=DRIVE129,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk129,drive=DRIVE129,bus=pci.24,addr=2.0 \ -drive id=DRIVE130,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk130,drive=DRIVE130,bus=pci.24,addr=3.0 \ -drive id=DRIVE131,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk131,drive=DRIVE131,bus=pci.24,addr=4.0 \ -drive id=DRIVE132,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk132,drive=DRIVE132,bus=pci.24,addr=5.0 \ -drive id=DRIVE133,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk133,drive=DRIVE133,bus=pci.24,addr=6.0 \ -drive id=DRIVE134,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk134,drive=DRIVE134,bus=pci.24,addr=7.0 \ -drive id=DRIVE135,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk135,drive=DRIVE135,bus=pci.24,addr=8.0 \ -device pci-bridge,id=pci.25,bus=pci.3,addr=4.0,chassis_nr=25 \ -drive id=DRIVE136,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk136,drive=DRIVE136,bus=pci.25,addr=1.0 \ -drive id=DRIVE137,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk137,drive=DRIVE137,bus=pci.25,addr=2.0 \ -drive id=DRIVE138,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk138,drive=DRIVE138,bus=pci.25,addr=3.0 \ -drive id=DRIVE139,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk139,drive=DRIVE139,bus=pci.25,addr=4.0 \ -drive id=DRIVE140,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk140,drive=DRIVE140,bus=pci.25,addr=5.0 \ -drive id=DRIVE141,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk141,drive=DRIVE141,bus=pci.25,addr=6.0 \ -drive id=DRIVE142,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk142,drive=DRIVE142,bus=pci.25,addr=7.0 \ -drive id=DRIVE143,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk143,drive=DRIVE143,bus=pci.25,addr=8.0 \ -device pci-bridge,id=pci.26,bus=pci.3,addr=5.0,chassis_nr=26 \ -drive id=DRIVE144,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk144,drive=DRIVE144,bus=pci.26,addr=1.0 \ -drive id=DRIVE145,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk145,drive=DRIVE145,bus=pci.26,addr=2.0 \ -drive id=DRIVE146,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk146,drive=DRIVE146,bus=pci.26,addr=3.0 \ -drive id=DRIVE147,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk147,drive=DRIVE147,bus=pci.26,addr=4.0 \ -drive id=DRIVE148,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk148,drive=DRIVE148,bus=pci.26,addr=5.0 \ -drive id=DRIVE149,if=none,file=img/1gb.qcow2,format=qcow2 \ -device virtio-blk-pci,id=vblk149,drive=DRIVE149,bus=pci.26,addr=6.0 -S \ -machine pseries -bios ./slof.bin \ -trace events=qemu_trace_events \ -L /home/aik/t/qemu-ppc64-bios/ -- Alexey ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-18 5:39 [Qemu-devel] Memory use with >100 virtio devices Alexey Kardashevskiy @ 2017-08-18 13:18 ` Stefan Hajnoczi 2017-08-21 4:31 ` David Gibson 0 siblings, 1 reply; 19+ messages in thread From: Stefan Hajnoczi @ 2017-08-18 13:18 UTC (permalink / raw) To: Alexey Kardashevskiy; +Cc: qemu-devel@nongnu.org, David Gibson [-- Attachment #1: Type: text/plain, Size: 1339 bytes --] On Fri, Aug 18, 2017 at 03:39:20PM +1000, Alexey Kardashevskiy wrote: > ==94451== -------------------- 4 of 10 -------------------- > ==94451== max-live: 314,649,600 in 150 blocks > ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) > ==94451== deaths: none (none of these blocks were freed) > ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) > ==94451== at 0x4895600: memalign (in > /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > ==94451== by 0x48957E7: posix_memalign (in > /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) > ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) > ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) > ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) > ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) > ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) > ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) > ==94451== by 0x9FFC17: bdrv_open (block.c:2626) > ==94451== by 0xA71027: blk_new_open (block-backend.c:267) > ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) This allocation is unnecessary. Most qcow2 files are not encrypted so s->cluster_data does not need to be allocated upfront. I'll send a patch. Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 455 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-18 13:18 ` Stefan Hajnoczi @ 2017-08-21 4:31 ` David Gibson 2017-08-21 5:50 ` Alexey Kardashevskiy 0 siblings, 1 reply; 19+ messages in thread From: David Gibson @ 2017-08-21 4:31 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: Alexey Kardashevskiy, qemu-devel@nongnu.org [-- Attachment #1: Type: text/plain, Size: 1938 bytes --] On Fri, Aug 18, 2017 at 02:18:53PM +0100, Stefan Hajnoczi wrote: > On Fri, Aug 18, 2017 at 03:39:20PM +1000, Alexey Kardashevskiy wrote: > > ==94451== -------------------- 4 of 10 -------------------- > > ==94451== max-live: 314,649,600 in 150 blocks > > ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) > > ==94451== deaths: none (none of these blocks were freed) > > ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) > > ==94451== at 0x4895600: memalign (in > > /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > > ==94451== by 0x48957E7: posix_memalign (in > > /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > > ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) > > ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) > > ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) > > ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) > > ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) > > ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) > > ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) > > ==94451== by 0x9FFC17: bdrv_open (block.c:2626) > > ==94451== by 0xA71027: blk_new_open (block-backend.c:267) > > ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) > > This allocation is unnecessary. Most qcow2 files are not encrypted so > s->cluster_data does not need to be allocated upfront. > > I'll send a patch. Is that sufficient to explain the problem, I can't quickly see how big that unnecessary allocation is - but would it account for the 10s of gigabytes usage we're seeing here? I'm suspecting we accidentally have a O(n^2) or worse space complexity going on here. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-21 4:31 ` David Gibson @ 2017-08-21 5:50 ` Alexey Kardashevskiy 2017-08-24 9:48 ` Alexey Kardashevskiy 0 siblings, 1 reply; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-21 5:50 UTC (permalink / raw) To: David Gibson, Stefan Hajnoczi; +Cc: qemu-devel@nongnu.org [-- Attachment #1: Type: text/plain, Size: 1956 bytes --] On 21/08/17 14:31, David Gibson wrote: > On Fri, Aug 18, 2017 at 02:18:53PM +0100, Stefan Hajnoczi wrote: >> On Fri, Aug 18, 2017 at 03:39:20PM +1000, Alexey Kardashevskiy wrote: >>> ==94451== -------------------- 4 of 10 -------------------- >>> ==94451== max-live: 314,649,600 in 150 blocks >>> ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) >>> ==94451== deaths: none (none of these blocks were freed) >>> ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) >>> ==94451== at 0x4895600: memalign (in >>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) >>> ==94451== by 0x48957E7: posix_memalign (in >>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) >>> ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) >>> ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) >>> ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) >>> ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) >>> ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) >>> ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) >>> ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) >>> ==94451== by 0x9FFC17: bdrv_open (block.c:2626) >>> ==94451== by 0xA71027: blk_new_open (block-backend.c:267) >>> ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) >> >> This allocation is unnecessary. Most qcow2 files are not encrypted so >> s->cluster_data does not need to be allocated upfront. >> >> I'll send a patch. > > Is that sufficient to explain the problem, I can't quickly see how big > that unnecessary allocation is - but would it account for the 10s of > gigabytes usage we're seeing here? > > I'm suspecting we accidentally have a O(n^2) or worse space complexity > going on here. > No, it is a small fraction only. See "[PATCH] qcow2: allocate cluster_cache/cluster_data on demand" thread for more details. -- Alexey [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 839 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-21 5:50 ` Alexey Kardashevskiy @ 2017-08-24 9:48 ` Alexey Kardashevskiy 2017-08-24 12:30 ` David Gibson 0 siblings, 1 reply; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-24 9:48 UTC (permalink / raw) To: David Gibson, Stefan Hajnoczi Cc: qemu-devel@nongnu.org, Michael S. Tsirkin, Gerd Hoffmann [-- Attachment #1.1: Type: text/plain, Size: 4087 bytes --] On 21/08/17 15:50, Alexey Kardashevskiy wrote: > On 21/08/17 14:31, David Gibson wrote: >> On Fri, Aug 18, 2017 at 02:18:53PM +0100, Stefan Hajnoczi wrote: >>> On Fri, Aug 18, 2017 at 03:39:20PM +1000, Alexey Kardashevskiy wrote: >>>> ==94451== -------------------- 4 of 10 -------------------- >>>> ==94451== max-live: 314,649,600 in 150 blocks >>>> ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) >>>> ==94451== deaths: none (none of these blocks were freed) >>>> ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) >>>> ==94451== at 0x4895600: memalign (in >>>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) >>>> ==94451== by 0x48957E7: posix_memalign (in >>>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) >>>> ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) >>>> ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) >>>> ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) >>>> ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) >>>> ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) >>>> ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) >>>> ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) >>>> ==94451== by 0x9FFC17: bdrv_open (block.c:2626) >>>> ==94451== by 0xA71027: blk_new_open (block-backend.c:267) >>>> ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) >>> >>> This allocation is unnecessary. Most qcow2 files are not encrypted so >>> s->cluster_data does not need to be allocated upfront. >>> >>> I'll send a patch. >> >> Is that sufficient to explain the problem, I can't quickly see how big >> that unnecessary allocation is - but would it account for the 10s of >> gigabytes usage we're seeing here? >> >> I'm suspecting we accidentally have a O(n^2) or worse space complexity >> going on here. >> > > No, it is a small fraction only. See "[PATCH] qcow2: allocate > cluster_cache/cluster_data on demand" thread for more details. The information was lost there so I'll continue in this thread. I run QEMU again, with 2GB of RAM, -initrd+-kernel, pseries, 64 PCI bridges, -S, no KVM, some virtio-block devices; I run it under "valgrind --tool=exp-dhat" and exited via "c-a x" as soon as possible. The summary of each run is: 50 virtio-block devices: guest_insns: 2,728,740,444 max_live: 1,214,121,770 in 226,958 blocks tot_alloc: 1,384,726,690 in 310,930 blocks 150 virtio-block devices: guest_insns: 17,576,279,582 max_live: 7,454,182,031 in 1,286,128 blocks tot_alloc: 7,958,747,994 in 1,469,719 blocks 250 virtio-block devices: guest_insns: 46,100,928,249 max_live: 19,423,868,479 in 3,264,833 blocks tot_alloc: 20,262,409,839 in 3,548,220 blocks 350 virtio-block devices: guest_insns: 88,046,403,555 max_live: 36,994,652,991 in 6,140,203 blocks tot_alloc: 38,167,153,779 in 6,523,206 blocks Memory usage 1) grows a lot 2) grows out of proportion 3) QEMU becomes incredibly slow. With the hack (below) and 350 virtio-block devices, the summary is: guest_insns: 7,873,805,573 max_live: 2,577,738,019 in 2,567,682 blocks tot_alloc: 3,750,238,807 in 2,950,685 blocks insns per allocated byte: 2 I am also attaching 2 snapshots from the valgrind's "massif" tool, with and without the hack. Ideas what to tweak or what valgrind tool to try? The hack is basically excluding virtio-pci-cfg-as from the address_spaces list (yeah, it breaks QEMU, this is just a hint): diff --git a/memory.c b/memory.c index 02c95d1..118ac7f 100644 --- a/memory.c +++ b/memory.c @@ -2589,6 +2589,7 @@ void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) as->ioeventfd_nb = 0; as->ioeventfds = NULL; QTAILQ_INIT(&as->listeners); + if (strcmp(name, "virtio-pci-cfg-as")) QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); as->name = g_strdup(name ? name : "anonymous"); address_space_init_dispatch(as); -- Alexey [-- Attachment #1.2: massiv.bad --] [-- Type: text/plain, Size: 28044 bytes --] 57 85,481,838,874 37,075,366,088 36,993,595,913 81,770,175 0 99.78% (36,993,595,913B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->95.82% (35,527,301,159B) 0x59E7392: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->94.64% (35,089,885,088B) 0x59E7756: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | | ->90.60% (33,590,452,224B) 0x3A785A: phys_map_node_reserve (exec.c:251) | | | ->90.60% (33,590,452,224B) 0x3A7CE2: phys_page_set (exec.c:307) | | | ->90.60% (33,590,452,224B) 0x3AAF26: register_multipage (exec.c:1345) | | | ->90.60% (33,590,452,224B) 0x3AB31E: mem_add (exec.c:1376) | | | ->90.55% (33,573,015,552B) 0x437F52: address_space_update_topology_pass (memory.c:855) | | | | ->90.55% (33,573,015,552B) 0x4382C2: address_space_update_topology (memory.c:889) | | | | ->90.55% (33,573,015,552B) 0x438502: memory_region_transaction_commit (memory.c:925) | | | | ->54.09% (20,055,085,056B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) | | | | | ->54.09% (20,055,085,056B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) | | | | | ->51.00% (18,909,941,760B) 0x43D186: memory_region_add_subregion (memory.c:2154) | | | | | | ->33.27% (12,334,546,944B) 0x92D67E: virtio_pci_modern_region_map (virtio-pci.c:1526) | | | | | | | ->33.27% (12,334,546,944B) 0x92D766: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) | | | | | | | ->08.33% (3,087,974,400B) 0x92DD32: virtio_pci_device_plugged (virtio-pci.c:1659) | | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->08.33% (3,087,974,400B) 0x92DD4E: virtio_pci_device_plugged (virtio-pci.c:1660) | | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->08.33% (3,087,876,096B) 0x92DD16: virtio_pci_device_plugged (virtio-pci.c:1658) | | | | | | | | ->08.33% (3,087,876,096B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->08.33% (3,087,876,096B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | | ->08.33% (3,087,876,096B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | | ->08.33% (3,087,876,096B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->08.33% (3,087,876,096B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->08.33% (3,087,876,096B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | | ->08.33% (3,087,876,096B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->08.33% (3,087,876,096B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | | ->08.33% (3,087,876,096B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->08.28% (3,070,722,048B) 0x92DCFA: virtio_pci_device_plugged (virtio-pci.c:1657) | | | | | | | ->08.28% (3,070,722,048B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->08.28% (3,070,722,048B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->08.28% (3,070,722,048B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->08.28% (3,070,722,048B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->08.28% (3,070,722,048B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->08.33% (3,087,974,400B) 0x86234E: msix_init (msix.c:333) | | | | | | | ->08.33% (3,087,974,400B) 0x862542: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->08.33% (3,087,974,400B) 0x92DECE: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->08.33% (3,087,974,400B) 0x8623A2: msix_init (msix.c:336) | | | | | | | ->08.33% (3,087,974,400B) 0x862542: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->08.33% (3,087,974,400B) 0x92DECE: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->01.03% (381,616,128B) 0x8679FA: shpc_init (shpc.c:649) | | | | | | | ->01.03% (381,616,128B) 0x84E942: pci_bridge_dev_realize (pci_bridge_dev.c:65) | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | | | ->00.05% (17,829,888B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->03.09% (1,145,143,296B) 0x43D1F6: memory_region_add_subregion_overlap (memory.c:2163) | | | | | ->03.09% (1,144,848,384B) 0x85F98A: pci_bridge_init_alias (pci_bridge.c:157) | | | | | | ->01.03% (381,616,128B) 0x85FBF2: pci_bridge_region_init (pci_bridge.c:190) | | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) | | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | | | ->01.03% (381,616,128B) 0x85FC42: pci_bridge_region_init (pci_bridge.c:196) | | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) | | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | | | ->01.03% (381,616,128B) 0x85FC92: pci_bridge_region_init (pci_bridge.c:202) | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | ->00.00% (294,912B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->18.82% (6,977,323,008B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) | | | | | ->18.82% (6,977,323,008B) 0x855E76: pci_init_bus_master (pci.c:92) | | | | | ->18.82% (6,977,323,008B) 0x855F4E: pcibus_machine_done (pci.c:104) | | | | | ->18.82% (6,977,323,008B) 0xB8E7E6: notifier_list_notify (notify.c:40) | | | | | ->18.82% (6,977,323,008B) 0x6F03B2: qemu_run_machine_init_done_notifiers (vl.c:2701) | | | | | ->18.82% (6,977,323,008B) 0x6F5E0E: main (vl.c:4743) | | | | | | | | | ->17.59% (6,523,207,680B) 0x43F016: address_space_init (memory.c:2598) | | | | | ->09.31% (3,452,338,176B) 0x85910E: do_pci_register_device (pci.c:1006) | | | | | | ->09.31% (3,452,338,176B) 0x85C42E: pci_qdev_realize (pci.c:1995) | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | | ->08.28% (3,070,722,048B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->08.28% (3,070,722,048B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | | ->08.28% (3,070,722,048B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->08.28% (3,070,722,048B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | ->08.28% (3,070,722,048B) 0x92E45A: virtio_pci_realize (virtio-pci.c:1793) | | | | | | ->08.28% (3,070,722,048B) 0x85C472: pci_qdev_realize (pci.c:2002) | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) | | | | | | ->08.28% (3,070,722,048B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) | | | | | | ->08.28% (3,070,722,048B) 0x6EEE7E: device_init_func (vl.c:2336) | | | | | | ->08.28% (3,070,722,048B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) | | | | | | ->08.28% (3,070,722,048B) 0x6F5C02: main (vl.c:4656) | | | | | | | | | | | ->00.00% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->00.05% (17,399,808B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | ->00.05% (17,436,672B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->04.04% (1,499,429,888B) 0x3AA99E: phys_section_add (exec.c:1275) | | | ->04.04% (1,499,429,888B) 0x3AF086: dummy_section (exec.c:2644) | | | ->04.04% (1,499,429,888B) 0x3AF306: mem_begin (exec.c:2680) | | | ->04.04% (1,498,658,816B) 0x4384C6: memory_region_transaction_commit (memory.c:922) | | | | ->02.42% (895,626,240B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) | | | | | ->02.42% (895,626,240B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) | | | | | ->02.28% (844,420,096B) 0x43D186: memory_region_add_subregion (memory.c:2154) | | | | | | ->01.49% (551,043,072B) 0x92D67E: virtio_pci_modern_region_map (virtio-pci.c:1526) | | | | | | | ->01.49% (551,043,072B) 0x92D766: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) | | | | | | | ->01.49% (551,043,072B) in 4 places, all below massif's threshold (1.00%) | | | | | | | | | | | | | ->00.79% (293,377,024B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->00.14% (51,206,144B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->01.63% (603,032,576B) in 3 places, all below massif's threshold (1.00%) | | | | | | | ->00.00% (771,072B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->00.00% (2,976B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->01.18% (437,408,640B) 0x43566A: flatview_insert (memory.c:276) | | ->01.18% (437,408,640B) 0x43721E: render_memory_region (memory.c:700) | | ->01.17% (435,189,120B) 0x436D46: render_memory_region (memory.c:658) | | | ->01.16% (428,537,600B) 0x436D02: render_memory_region (memory.c:652) | | | | ->01.16% (428,537,600B) 0x437352: generate_memory_topology (memory.c:713) | | | | ->01.16% (428,537,600B) 0x438296: address_space_update_topology (memory.c:886) | | | | ->01.16% (428,537,600B) 0x438502: memory_region_transaction_commit (memory.c:925) | | | | ->01.16% (428,537,600B) in 4 places, all below massif's threshold (1.00%) | | | | | | | ->00.02% (6,651,520B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->00.01% (2,219,520B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->00.00% (7,431B) in 1+ places, all below ms_print's threshold (01.00%) | ->02.52% (935,163,904B) 0xB744BA: qemu_try_memalign (oslib-posix.c:106) | ->02.48% (917,862,400B) 0xA92062: qemu_try_blockalign (io.c:2493) | | ->02.47% (917,504,000B) 0xA50402: qcow2_cache_create (qcow2-cache.c:124) | | | ->01.98% (734,003,200B) 0xA3355E: qcow2_update_options_prepare (qcow2.c:878) | | | | ->01.98% (734,003,200B) 0xA33FF2: qcow2_update_options (qcow2.c:1077) | | | | ->01.98% (734,003,200B) 0xA34DBA: qcow2_do_open (qcow2.c:1358) | | | | ->01.98% (734,003,200B) 0xA3559A: qcow2_open (qcow2.c:1514) | | | | ->01.98% (734,003,200B) 0x9FB992: bdrv_open_driver (block.c:1109) | | | | ->01.98% (734,003,200B) 0x9FC456: bdrv_open_common (block.c:1365) | | | | ->01.98% (734,003,200B) 0x9FF866: bdrv_open_inherit (block.c:2542) | | | | ->01.98% (734,003,200B) 0x9FFC5A: bdrv_open (block.c:2626) | | | | ->01.98% (734,003,200B) in 2 places, all below massif's threshold (1.00%) | | | | | | | ->00.49% (183,500,800B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->00.00% (358,400B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->00.05% (17,301,504B) in 1+ places, all below ms_print's threshold (01.00%) | ->01.10% (407,116,949B) 0x59E72DE: g_malloc0 (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->01.10% (407,116,949B) in 92 places, all below massif's threshold (1.00%) | ->00.33% (124,013,901B) in 1+ places, all below ms_print's threshold (01.00%) [-- Attachment #1.3: massiv.good --] [-- Type: text/plain, Size: 42982 bytes --] 44 6,960,203,871 2,623,230,816 2,577,729,454 45,501,362 0 98.27% (2,577,729,454B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->45.96% (1,205,547,303B) 0x59E7392: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->45.65% (1,197,564,832B) 0x59E7756: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | | ->28.14% (738,191,360B) 0x3AA99E: phys_section_add (exec.c:1275) | | | ->28.14% (738,191,360B) 0x3AF086: dummy_section (exec.c:2644) | | | ->28.14% (738,191,360B) 0x3AF306: mem_begin (exec.c:2680) | | | ->28.12% (737,778,688B) 0x4384C6: memory_region_transaction_commit (memory.c:922) | | | | ->18.56% (486,874,112B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) | | | | | ->18.56% (486,874,112B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) | | | | | ->17.49% (458,916,864B) 0x43D186: memory_region_add_subregion (memory.c:2154) | | | | | | ->11.42% (299,446,272B) 0x92D63A: virtio_pci_modern_region_map (virtio-pci.c:1526) | | | | | | | ->11.42% (299,446,272B) 0x92D722: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) | | | | | | | ->02.85% (74,861,568B) 0x92DCB6: virtio_pci_device_plugged (virtio-pci.c:1657) | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | | | ->02.85% (74,861,568B) 0x92DCD2: virtio_pci_device_plugged (virtio-pci.c:1658) | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | | | ->02.85% (74,861,568B) 0x92DCEE: virtio_pci_device_plugged (virtio-pci.c:1659) | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | | | ->02.85% (74,861,568B) 0x92DD0A: virtio_pci_device_plugged (virtio-pci.c:1660) | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | ->02.85% (74,861,568B) 0x86230A: msix_init (msix.c:333) | | | | | | | ->02.85% (74,861,568B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->02.85% (74,861,568B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | ->02.85% (74,861,568B) 0x86235E: msix_init (msix.c:336) | | | | | | | ->02.85% (74,861,568B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->02.85% (74,861,568B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | | | | | | | ->00.37% (9,747,456B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->01.07% (27,957,248B) 0x43D1F6: memory_region_add_subregion_overlap (memory.c:2163) | | | | | ->01.07% (27,949,056B) 0x85F946: pci_bridge_init_alias (pci_bridge.c:157) | | | | | | ->01.07% (27,949,056B) in 3 places, all below massif's threshold (1.00%) | | | | | | | | | | | ->00.00% (8,192B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->06.34% (166,302,720B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) | | | | | ->06.34% (166,302,720B) 0x855E32: pci_init_bus_master (pci.c:92) | | | | | ->06.34% (166,302,720B) 0x855F0A: pcibus_machine_done (pci.c:104) | | | | | ->06.34% (166,302,720B) 0xB8E77A: notifier_list_notify (notify.c:40) | | | | | ->06.34% (166,302,720B) 0x6F036E: qemu_run_machine_init_done_notifiers (vl.c:2701) | | | | | ->06.34% (166,302,720B) 0x6F5DCA: main (vl.c:4743) | | | | | | | | | ->03.21% (84,187,136B) 0x43F016: address_space_init (memory.c:2596) | | | | | ->03.21% (84,177,920B) 0x8590CA: do_pci_register_device (pci.c:1006) | | | | | | ->03.21% (84,177,920B) 0x85C3EA: pci_qdev_realize (pci.c:1995) | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | ->02.85% (74,861,568B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->02.85% (74,861,568B) 0x6F5BBE: main (vl.c:4656) | | | | | | | | | | | | | ->00.36% (9,316,352B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->00.00% (9,216B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->00.02% (414,720B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | ->00.02% (412,672B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->17.51% (459,370,496B) 0x3A785A: phys_map_node_reserve (exec.c:251) | | | ->17.51% (459,370,496B) 0x3A7CE2: phys_page_set (exec.c:307) | | | ->17.51% (459,370,496B) 0x3AAF26: register_multipage (exec.c:1345) | | | ->17.51% (459,370,496B) 0x3AB31E: mem_add (exec.c:1376) | | | ->17.51% (459,223,040B) 0x437F52: address_space_update_topology_pass (memory.c:855) | | | | ->17.51% (459,223,040B) 0x4382C2: address_space_update_topology (memory.c:889) | | | | ->17.51% (459,223,040B) 0x438502: memory_region_transaction_commit (memory.c:925) | | | | ->12.99% (340,668,416B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) | | | | | ->12.99% (340,668,416B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) | | | | | ->12.12% (317,812,736B) 0x43D186: memory_region_add_subregion (memory.c:2154) | | | | | | ->07.87% (206,438,400B) 0x92D63A: virtio_pci_modern_region_map (virtio-pci.c:1526) | | | | | | | ->07.87% (206,438,400B) 0x92D722: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) | | | | | | | ->01.97% (51,609,600B) 0x92DCB6: virtio_pci_device_plugged (virtio-pci.c:1657) | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->01.97% (51,609,600B) 0x92DCD2: virtio_pci_device_plugged (virtio-pci.c:1658) | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->01.97% (51,609,600B) 0x92DCEE: virtio_pci_device_plugged (virtio-pci.c:1659) | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | | | ->01.97% (51,609,600B) 0x92DD0A: virtio_pci_device_plugged (virtio-pci.c:1660) | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->01.97% (51,609,600B) 0x86230A: msix_init (msix.c:333) | | | | | | | ->01.97% (51,609,600B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->01.97% (51,609,600B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->01.97% (51,609,600B) 0x86235E: msix_init (msix.c:336) | | | | | | | ->01.97% (51,609,600B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) | | | | | | | ->01.97% (51,609,600B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | | | | | | | ->00.31% (8,155,136B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->00.87% (22,855,680B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->02.26% (59,277,312B) 0x43F016: address_space_init (memory.c:2596) | | | | | ->02.25% (59,129,856B) 0x8590CA: do_pci_register_device (pci.c:1006) | | | | | | ->02.25% (59,129,856B) 0x85C3EA: pci_qdev_realize (pci.c:1995) | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) | | | | | | | ->01.97% (51,609,600B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | | | | | | | ->01.97% (51,609,600B) 0x6EEE3A: device_init_func (vl.c:2336) | | | | | | | ->01.97% (51,609,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | | | | | ->01.97% (51,609,600B) 0x6F5BBE: main (vl.c:4656) | | | | | | | | | | | | | ->00.29% (7,520,256B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->02.25% (59,129,856B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) | | | | | ->02.25% (59,129,856B) 0x855E32: pci_init_bus_master (pci.c:92) | | | | | ->02.25% (59,129,856B) 0x855F0A: pcibus_machine_done (pci.c:104) | | | | | ->02.25% (59,129,856B) 0xB8E77A: notifier_list_notify (notify.c:40) | | | | | ->02.25% (59,129,856B) 0x6F036E: qemu_run_machine_init_done_notifiers (vl.c:2701) | | | | | ->02.25% (59,129,856B) 0x6F5DCA: main (vl.c:4743) | | | | | | | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->00.00% (2,976B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->00.30% (7,982,471B) in 1+ places, all below ms_print's threshold (01.00%) | ->35.65% (935,163,904B) 0xB7444E: qemu_try_memalign (oslib-posix.c:106) | ->34.99% (917,862,400B) 0xA91FF6: qemu_try_blockalign (io.c:2493) | | ->34.98% (917,504,000B) 0xA50396: qcow2_cache_create (qcow2-cache.c:124) | | | ->27.98% (734,003,200B) 0xA334F2: qcow2_update_options_prepare (qcow2.c:878) | | | | ->27.98% (734,003,200B) 0xA33F86: qcow2_update_options (qcow2.c:1077) | | | | ->27.98% (734,003,200B) 0xA34D4E: qcow2_do_open (qcow2.c:1358) | | | | ->27.98% (734,003,200B) 0xA3552E: qcow2_open (qcow2.c:1514) | | | | ->27.98% (734,003,200B) 0x9FB926: bdrv_open_driver (block.c:1109) | | | | ->27.98% (734,003,200B) 0x9FC3EA: bdrv_open_common (block.c:1365) | | | | ->27.98% (734,003,200B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) | | | | ->27.98% (734,003,200B) 0x9FFBEE: bdrv_open (block.c:2626) | | | | ->13.99% (367,001,600B) 0xA70FCA: blk_new_open (block-backend.c:267) | | | | | ->13.99% (367,001,600B) 0x6D3E6A: blockdev_init (blockdev.c:588) | | | | | | ->13.99% (367,001,600B) 0x6D52EA: drive_new (blockdev.c:1093) | | | | | | ->13.99% (367,001,600B) 0x6E98DA: drive_init_func (vl.c:1157) | | | | | | ->13.99% (367,001,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | | | | ->13.99% (367,001,600B) 0x6F577E: main (vl.c:4569) | | | | | | | | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->13.99% (367,001,600B) 0x9FEF4A: bdrv_append_temp_snapshot (block.c:2336) | | | | ->13.99% (367,001,600B) 0x9FF996: bdrv_open_inherit (block.c:2585) | | | | ->13.99% (367,001,600B) 0x9FFBEE: bdrv_open (block.c:2626) | | | | ->13.99% (367,001,600B) 0xA70FCA: blk_new_open (block-backend.c:267) | | | | ->13.99% (367,001,600B) 0x6D3E6A: blockdev_init (blockdev.c:588) | | | | ->13.99% (367,001,600B) 0x6D52EA: drive_new (blockdev.c:1093) | | | | ->13.99% (367,001,600B) 0x6E98DA: drive_init_func (vl.c:1157) | | | | ->13.99% (367,001,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | | ->13.99% (367,001,600B) 0x6F577E: main (vl.c:4569) | | | | | | | ->07.00% (183,500,800B) 0xA33516: qcow2_update_options_prepare (qcow2.c:879) | | | ->07.00% (183,500,800B) 0xA33F86: qcow2_update_options (qcow2.c:1077) | | | ->07.00% (183,500,800B) 0xA34D4E: qcow2_do_open (qcow2.c:1358) | | | ->07.00% (183,500,800B) 0xA3552E: qcow2_open (qcow2.c:1514) | | | ->07.00% (183,500,800B) 0x9FB926: bdrv_open_driver (block.c:1109) | | | ->07.00% (183,500,800B) 0x9FC3EA: bdrv_open_common (block.c:1365) | | | ->07.00% (183,500,800B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) | | | ->07.00% (183,500,800B) 0x9FFBEE: bdrv_open (block.c:2626) | | | ->03.50% (91,750,400B) 0xA70FCA: blk_new_open (block-backend.c:267) | | | | ->03.50% (91,750,400B) 0x6D3E6A: blockdev_init (blockdev.c:588) | | | | | ->03.50% (91,750,400B) 0x6D52EA: drive_new (blockdev.c:1093) | | | | | ->03.50% (91,750,400B) 0x6E98DA: drive_init_func (vl.c:1157) | | | | | ->03.50% (91,750,400B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | | | ->03.50% (91,750,400B) 0x6F577E: main (vl.c:4569) | | | | | | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | ->03.50% (91,750,400B) 0x9FEF4A: bdrv_append_temp_snapshot (block.c:2336) | | | ->03.50% (91,750,400B) 0x9FF996: bdrv_open_inherit (block.c:2585) | | | ->03.50% (91,750,400B) 0x9FFBEE: bdrv_open (block.c:2626) | | | ->03.50% (91,750,400B) 0xA70FCA: blk_new_open (block-backend.c:267) | | | ->03.50% (91,750,400B) 0x6D3E6A: blockdev_init (blockdev.c:588) | | | ->03.50% (91,750,400B) 0x6D52EA: drive_new (blockdev.c:1093) | | | ->03.50% (91,750,400B) 0x6E98DA: drive_init_func (vl.c:1157) | | | ->03.50% (91,750,400B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | | | ->03.50% (91,750,400B) 0x6F577E: main (vl.c:4569) | | | | | ->00.01% (358,400B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->00.66% (17,301,504B) in 1+ places, all below ms_print's threshold (01.00%) | ->13.07% (342,746,525B) 0x59E72DE: g_malloc0 (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->05.97% (156,494,936B) 0x79C4D2: rom_add_file (loader.c:930) | | ->05.97% (156,494,936B) 0x797306: load_image_targphys_as (loader.c:153) | | ->05.97% (156,494,936B) 0x79725E: load_image_targphys (loader.c:139) | | ->05.93% (155,589,632B) 0x515706: ppc_spapr_init (spapr.c:2451) | | | ->05.93% (155,589,632B) 0x79669A: machine_run_board_init (machine.c:760) | | | ->05.93% (155,589,632B) 0x6F5AD2: main (vl.c:4630) | | | | | ->00.03% (905,304B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->03.20% (84,050,584B) 0x59E76C6: g_malloc0_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | | ->02.42% (63,438,320B) 0x3AF2DE: mem_begin (exec.c:2677) | | | ->02.42% (63,402,856B) 0x4384C6: memory_region_transaction_commit (memory.c:922) | | | | ->01.60% (41,840,744B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) | | | | | ->01.60% (41,840,744B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) | | | | | ->01.50% (39,438,168B) 0x43D186: memory_region_add_subregion (memory.c:2154) | | | | | | ->01.50% (39,438,168B) in 10 places, all below massif's threshold (1.00%) | | | | | | | | | | | ->00.09% (2,402,576B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | | | ->00.82% (21,562,112B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | | | ->00.00% (35,464B) in 1+ places, all below ms_print's threshold (01.00%) | | | | | ->00.79% (20,612,264B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->02.15% (56,325,805B) in 90 places, all below massif's threshold (1.00%) | | | ->01.75% (45,875,200B) 0x4F289A: virtio_init (virtio.c:2249) | ->01.75% (45,875,200B) 0x4759E2: virtio_blk_device_realize (virtio-blk.c:946) | ->01.75% (45,875,200B) 0x4F3672: virtio_device_realize (virtio.c:2485) | ->01.75% (45,875,200B) 0x78A496: device_set_realized (qdev.c:914) | ->01.75% (45,875,200B) 0x9F59AA: property_set_bool (object.c:1886) | ->01.75% (45,875,200B) 0x9F314E: object_property_set (object.c:1093) | ->01.75% (45,875,200B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | ->01.75% (45,875,200B) 0x9F34FA: object_property_set_bool (object.c:1162) | ->01.75% (45,875,200B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) | ->01.75% (45,875,200B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) | ->01.75% (45,875,200B) 0x85C42E: pci_qdev_realize (pci.c:2002) | ->01.75% (45,875,200B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) | ->01.75% (45,875,200B) 0x78A496: device_set_realized (qdev.c:914) | ->01.75% (45,875,200B) 0x9F59AA: property_set_bool (object.c:1886) | ->01.75% (45,875,200B) 0x9F314E: object_property_set (object.c:1093) | ->01.75% (45,875,200B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) | ->01.75% (45,875,200B) 0x9F34FA: object_property_set_bool (object.c:1162) | ->01.75% (45,875,200B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) | ->01.75% (45,875,200B) 0x6EEE3A: device_init_func (vl.c:2336) | ->01.75% (45,875,200B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) | ->01.75% (45,875,200B) 0x6F5BBE: main (vl.c:4656) | ->01.78% (46,585,929B) 0x59E7236: g_malloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->01.16% (30,407,584B) 0x59E7636: g_malloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | | ->01.10% (28,819,480B) 0x4372C6: generate_memory_topology (memory.c:709) | | | ->01.10% (28,819,480B) 0x438296: address_space_update_topology (memory.c:886) | | | ->01.10% (28,819,480B) 0x438502: memory_region_transaction_commit (memory.c:925) | | | ->01.10% (28,819,480B) in 4 places, all below massif's threshold (1.00%) | | | | | ->00.06% (1,588,104B) in 1+ places, all below ms_print's threshold (01.00%) | | | ->00.62% (16,178,345B) in 1+ places, all below ms_print's threshold (01.00%) | ->01.75% (45,875,200B) 0x59E74DE: g_try_malloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) | ->01.75% (45,875,200B) 0xA3D99A: qcow2_refcount_init (qcow2-refcount.c:109) | | ->01.75% (45,875,200B) 0xA34D82: qcow2_do_open (qcow2.c:1366) | | ->01.75% (45,875,200B) 0xA3552E: qcow2_open (qcow2.c:1514) | | ->01.75% (45,875,200B) 0x9FB926: bdrv_open_driver (block.c:1109) | | ->01.75% (45,875,200B) 0x9FC3EA: bdrv_open_common (block.c:1365) | | ->01.75% (45,875,200B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) | | ->01.75% (45,875,200B) 0x9FFBEE: bdrv_open (block.c:2626) | | ->01.75% (45,875,200B) in 2 places, all below massif's threshold (1.00%) | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) | ->00.07% (1,810,593B) in 1+ places, all below ms_print's threshold (01.00%) [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 839 bytes --] ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-24 9:48 ` Alexey Kardashevskiy @ 2017-08-24 12:30 ` David Gibson 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy 2017-08-25 10:48 ` [Qemu-devel] Memory use with >100 virtio devices Paolo Bonzini 0 siblings, 2 replies; 19+ messages in thread From: David Gibson @ 2017-08-24 12:30 UTC (permalink / raw) To: Alexey Kardashevskiy Cc: Stefan Hajnoczi, qemu-devel@nongnu.org, Michael S. Tsirkin, Gerd Hoffmann [-- Attachment #1: Type: text/plain, Size: 78336 bytes --] On Thu, Aug 24, 2017 at 07:48:57PM +1000, Alexey Kardashevskiy wrote: > On 21/08/17 15:50, Alexey Kardashevskiy wrote: > > On 21/08/17 14:31, David Gibson wrote: > >> On Fri, Aug 18, 2017 at 02:18:53PM +0100, Stefan Hajnoczi wrote: > >>> On Fri, Aug 18, 2017 at 03:39:20PM +1000, Alexey Kardashevskiy wrote: > >>>> ==94451== -------------------- 4 of 10 -------------------- > >>>> ==94451== max-live: 314,649,600 in 150 blocks > >>>> ==94451== tot-alloc: 314,649,600 in 150 blocks (avg size 2097664.00) > >>>> ==94451== deaths: none (none of these blocks were freed) > >>>> ==94451== acc-ratios: 0.00 rd, 0.00 wr (0 b-read, 0 b-written) > >>>> ==94451== at 0x4895600: memalign (in > >>>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > >>>> ==94451== by 0x48957E7: posix_memalign (in > >>>> /usr/lib/valgrind/vgpreload_exp-dhat-ppc64le-linux.so) > >>>> ==94451== by 0xB744AB: qemu_try_memalign (oslib-posix.c:106) > >>>> ==94451== by 0xA92053: qemu_try_blockalign (io.c:2493) > >>>> ==94451== by 0xA34DDF: qcow2_do_open (qcow2.c:1365) > >>>> ==94451== by 0xA35627: qcow2_open (qcow2.c:1526) > >>>> ==94451== by 0x9FB94F: bdrv_open_driver (block.c:1109) > >>>> ==94451== by 0x9FC413: bdrv_open_common (block.c:1365) > >>>> ==94451== by 0x9FF823: bdrv_open_inherit (block.c:2542) > >>>> ==94451== by 0x9FFC17: bdrv_open (block.c:2626) > >>>> ==94451== by 0xA71027: blk_new_open (block-backend.c:267) > >>>> ==94451== by 0x6D3E6B: blockdev_init (blockdev.c:588) > >>> > >>> This allocation is unnecessary. Most qcow2 files are not encrypted so > >>> s->cluster_data does not need to be allocated upfront. > >>> > >>> I'll send a patch. > >> > >> Is that sufficient to explain the problem, I can't quickly see how big > >> that unnecessary allocation is - but would it account for the 10s of > >> gigabytes usage we're seeing here? > >> > >> I'm suspecting we accidentally have a O(n^2) or worse space complexity > >> going on here. > >> > > > > No, it is a small fraction only. See "[PATCH] qcow2: allocate > > cluster_cache/cluster_data on demand" thread for more details. > > > The information was lost there so I'll continue in this thread. > > I run QEMU again, with 2GB of RAM, -initrd+-kernel, pseries, 64 PCI > bridges, -S, no KVM, some virtio-block devices; I run it under "valgrind > --tool=exp-dhat" and exited via "c-a x" as soon as possible. > > The summary of each run is: > > 50 virtio-block devices: > guest_insns: 2,728,740,444 > max_live: 1,214,121,770 in 226,958 blocks > tot_alloc: 1,384,726,690 in 310,930 blocks > > > 150 virtio-block devices: > guest_insns: 17,576,279,582 > max_live: 7,454,182,031 in 1,286,128 blocks > tot_alloc: 7,958,747,994 in 1,469,719 blocks > > 250 virtio-block devices: > guest_insns: 46,100,928,249 > max_live: 19,423,868,479 in 3,264,833 blocks > tot_alloc: 20,262,409,839 in 3,548,220 blocks > > 350 virtio-block devices: > guest_insns: 88,046,403,555 > max_live: 36,994,652,991 in 6,140,203 blocks > tot_alloc: 38,167,153,779 in 6,523,206 blocks > > > Memory usage 1) grows a lot 2) grows out of proportion Yup, looks to be growing O(n^2) as I suspected. > 3) QEMU becomes incredibly slow. Not surprising. If memory is growing as O(n^2) chances are good we're also traversing some structure that is growing as O(n^2) which would certainly be slow. > With the hack (below) and 350 virtio-block devices, the summary is: > guest_insns: 7,873,805,573 > max_live: 2,577,738,019 in 2,567,682 blocks > tot_alloc: 3,750,238,807 in 2,950,685 blocks > insns per allocated byte: 2 > > > I am also attaching 2 snapshots from the valgrind's "massif" tool, with and > without the hack. > > Ideas what to tweak or what valgrind tool to try? valgrind probably isn't that useful at this point. I think we need to instrument bits of the code to find what the O(n^2) algo is and fix it. Seems to me checking if the address_spaces list is growing to O(n^2) entries would be a good place to start. > > > > The hack is basically excluding virtio-pci-cfg-as from the address_spaces > list (yeah, it breaks QEMU, this is just a hint): > > diff --git a/memory.c b/memory.c > index 02c95d1..118ac7f 100644 > --- a/memory.c > +++ b/memory.c > @@ -2589,6 +2589,7 @@ void address_space_init(AddressSpace *as, > MemoryRegion *root, const char *name) > as->ioeventfd_nb = 0; > as->ioeventfds = NULL; > QTAILQ_INIT(&as->listeners); > + if (strcmp(name, "virtio-pci-cfg-as")) > QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); > as->name = g_strdup(name ? name : "anonymous"); > address_space_init_dispatch(as); > > > > > 57 85,481,838,874 37,075,366,088 36,993,595,913 81,770,175 0 > 99.78% (36,993,595,913B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. > ->95.82% (35,527,301,159B) 0x59E7392: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->94.64% (35,089,885,088B) 0x59E7756: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | | ->90.60% (33,590,452,224B) 0x3A785A: phys_map_node_reserve (exec.c:251) > | | | ->90.60% (33,590,452,224B) 0x3A7CE2: phys_page_set (exec.c:307) > | | | ->90.60% (33,590,452,224B) 0x3AAF26: register_multipage (exec.c:1345) > | | | ->90.60% (33,590,452,224B) 0x3AB31E: mem_add (exec.c:1376) > | | | ->90.55% (33,573,015,552B) 0x437F52: address_space_update_topology_pass (memory.c:855) > | | | | ->90.55% (33,573,015,552B) 0x4382C2: address_space_update_topology (memory.c:889) > | | | | ->90.55% (33,573,015,552B) 0x438502: memory_region_transaction_commit (memory.c:925) > | | | | ->54.09% (20,055,085,056B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) > | | | | | ->54.09% (20,055,085,056B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) > | | | | | ->51.00% (18,909,941,760B) 0x43D186: memory_region_add_subregion (memory.c:2154) > | | | | | | ->33.27% (12,334,546,944B) 0x92D67E: virtio_pci_modern_region_map (virtio-pci.c:1526) > | | | | | | | ->33.27% (12,334,546,944B) 0x92D766: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) > | | | | | | | ->08.33% (3,087,974,400B) 0x92DD32: virtio_pci_device_plugged (virtio-pci.c:1659) > | | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->08.33% (3,087,974,400B) 0x92DD4E: virtio_pci_device_plugged (virtio-pci.c:1660) > | | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->08.33% (3,087,876,096B) 0x92DD16: virtio_pci_device_plugged (virtio-pci.c:1658) > | | | | | | | | ->08.33% (3,087,876,096B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->08.33% (3,087,876,096B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->08.33% (3,087,876,096B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | | ->08.33% (3,087,876,096B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->08.33% (3,087,876,096B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->08.33% (3,087,876,096B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->08.33% (3,087,876,096B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->08.33% (3,087,876,096B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | | ->08.33% (3,087,876,096B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->08.28% (3,070,722,048B) 0x92DCFA: virtio_pci_device_plugged (virtio-pci.c:1657) > | | | | | | | ->08.28% (3,070,722,048B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->08.28% (3,070,722,048B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->08.28% (3,070,722,048B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->08.28% (3,070,722,048B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->08.28% (3,070,722,048B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->08.33% (3,087,974,400B) 0x86234E: msix_init (msix.c:333) > | | | | | | | ->08.33% (3,087,974,400B) 0x862542: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->08.33% (3,087,974,400B) 0x92DECE: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->08.33% (3,087,974,400B) 0x8623A2: msix_init (msix.c:336) > | | | | | | | ->08.33% (3,087,974,400B) 0x862542: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->08.33% (3,087,974,400B) 0x92DECE: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->08.33% (3,087,974,400B) 0x931A76: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->08.33% (3,087,974,400B) 0x4F36EE: virtio_device_realize (virtio.c:2492) > | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->08.33% (3,087,974,400B) 0x92EE3E: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->08.33% (3,087,974,400B) 0x92E6EA: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->08.33% (3,087,974,400B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->08.33% (3,087,974,400B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->08.33% (3,087,974,400B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.33% (3,087,974,400B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->01.03% (381,616,128B) 0x8679FA: shpc_init (shpc.c:649) > | | | | | | | ->01.03% (381,616,128B) 0x84E942: pci_bridge_dev_realize (pci_bridge_dev.c:65) > | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) > | | | | | | | > | | | | | | ->00.05% (17,829,888B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->03.09% (1,145,143,296B) 0x43D1F6: memory_region_add_subregion_overlap (memory.c:2163) > | | | | | ->03.09% (1,144,848,384B) 0x85F98A: pci_bridge_init_alias (pci_bridge.c:157) > | | | | | | ->01.03% (381,616,128B) 0x85FBF2: pci_bridge_region_init (pci_bridge.c:190) > | | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) > | | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) > | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) > | | | | | | | > | | | | | | ->01.03% (381,616,128B) 0x85FC42: pci_bridge_region_init (pci_bridge.c:196) > | | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) > | | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) > | | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) > | | | | | | | > | | | | | | ->01.03% (381,616,128B) 0x85FC92: pci_bridge_region_init (pci_bridge.c:202) > | | | | | | ->01.03% (381,616,128B) 0x860586: pci_bridge_initfn (pci_bridge.c:383) > | | | | | | ->01.03% (381,616,128B) 0x84E8B6: pci_bridge_dev_realize (pci_bridge_dev.c:59) > | | | | | | ->01.03% (381,616,128B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) > | | | | | | > | | | | | ->00.00% (294,912B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->18.82% (6,977,323,008B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) > | | | | | ->18.82% (6,977,323,008B) 0x855E76: pci_init_bus_master (pci.c:92) > | | | | | ->18.82% (6,977,323,008B) 0x855F4E: pcibus_machine_done (pci.c:104) > | | | | | ->18.82% (6,977,323,008B) 0xB8E7E6: notifier_list_notify (notify.c:40) > | | | | | ->18.82% (6,977,323,008B) 0x6F03B2: qemu_run_machine_init_done_notifiers (vl.c:2701) > | | | | | ->18.82% (6,977,323,008B) 0x6F5E0E: main (vl.c:4743) > | | | | | > | | | | ->17.59% (6,523,207,680B) 0x43F016: address_space_init (memory.c:2598) > | | | | | ->09.31% (3,452,338,176B) 0x85910E: do_pci_register_device (pci.c:1006) > | | | | | | ->09.31% (3,452,338,176B) 0x85C42E: pci_qdev_realize (pci.c:1995) > | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | | ->08.28% (3,070,722,048B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->08.28% (3,070,722,048B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | | ->08.28% (3,070,722,048B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->08.28% (3,070,722,048B) 0x6F5C02: main (vl.c:4656) > | | | | | | | > | | | | | | ->01.03% (381,616,128B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | ->01.03% (381,616,128B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | ->01.03% (381,616,128B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | ->01.03% (381,616,128B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | ->01.03% (381,616,128B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | ->01.03% (381,616,128B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | ->01.03% (381,616,128B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | ->01.03% (381,616,128B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | ->01.03% (381,616,128B) 0x6F5C02: main (vl.c:4656) > | | | | | | > | | | | | ->08.28% (3,070,722,048B) 0x92E45A: virtio_pci_realize (virtio-pci.c:1793) > | | | | | | ->08.28% (3,070,722,048B) 0x85C472: pci_qdev_realize (pci.c:2002) > | | | | | | ->08.28% (3,070,722,048B) 0x92EBDE: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | ->08.28% (3,070,722,048B) 0x78A4DA: device_set_realized (qdev.c:914) > | | | | | | ->08.28% (3,070,722,048B) 0x9F5A16: property_set_bool (object.c:1886) > | | | | | | ->08.28% (3,070,722,048B) 0x9F31BA: object_property_set (object.c:1093) > | | | | | | ->08.28% (3,070,722,048B) 0x9F7756: object_property_set_qobject (qom-qobject.c:27) > | | | | | | ->08.28% (3,070,722,048B) 0x9F3566: object_property_set_bool (object.c:1162) > | | | | | | ->08.28% (3,070,722,048B) 0x6E2266: qdev_device_add (qdev-monitor.c:652) > | | | | | | ->08.28% (3,070,722,048B) 0x6EEE7E: device_init_func (vl.c:2336) > | | | | | | ->08.28% (3,070,722,048B) 0xB92506: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | ->08.28% (3,070,722,048B) 0x6F5C02: main (vl.c:4656) > | | | | | | > | | | | | ->00.00% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->00.05% (17,399,808B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | > | | | ->00.05% (17,436,672B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->04.04% (1,499,429,888B) 0x3AA99E: phys_section_add (exec.c:1275) > | | | ->04.04% (1,499,429,888B) 0x3AF086: dummy_section (exec.c:2644) > | | | ->04.04% (1,499,429,888B) 0x3AF306: mem_begin (exec.c:2680) > | | | ->04.04% (1,498,658,816B) 0x4384C6: memory_region_transaction_commit (memory.c:922) > | | | | ->02.42% (895,626,240B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) > | | | | | ->02.42% (895,626,240B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) > | | | | | ->02.28% (844,420,096B) 0x43D186: memory_region_add_subregion (memory.c:2154) > | | | | | | ->01.49% (551,043,072B) 0x92D67E: virtio_pci_modern_region_map (virtio-pci.c:1526) > | | | | | | | ->01.49% (551,043,072B) 0x92D766: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) > | | | | | | | ->01.49% (551,043,072B) in 4 places, all below massif's threshold (1.00%) > | | | | | | | > | | | | | | ->00.79% (293,377,024B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->00.14% (51,206,144B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->01.63% (603,032,576B) in 3 places, all below massif's threshold (1.00%) > | | | | > | | | ->00.00% (771,072B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->00.00% (2,976B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->01.18% (437,408,640B) 0x43566A: flatview_insert (memory.c:276) > | | ->01.18% (437,408,640B) 0x43721E: render_memory_region (memory.c:700) > | | ->01.17% (435,189,120B) 0x436D46: render_memory_region (memory.c:658) > | | | ->01.16% (428,537,600B) 0x436D02: render_memory_region (memory.c:652) > | | | | ->01.16% (428,537,600B) 0x437352: generate_memory_topology (memory.c:713) > | | | | ->01.16% (428,537,600B) 0x438296: address_space_update_topology (memory.c:886) > | | | | ->01.16% (428,537,600B) 0x438502: memory_region_transaction_commit (memory.c:925) > | | | | ->01.16% (428,537,600B) in 4 places, all below massif's threshold (1.00%) > | | | | > | | | ->00.02% (6,651,520B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->00.01% (2,219,520B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->00.00% (7,431B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->02.52% (935,163,904B) 0xB744BA: qemu_try_memalign (oslib-posix.c:106) > | ->02.48% (917,862,400B) 0xA92062: qemu_try_blockalign (io.c:2493) > | | ->02.47% (917,504,000B) 0xA50402: qcow2_cache_create (qcow2-cache.c:124) > | | | ->01.98% (734,003,200B) 0xA3355E: qcow2_update_options_prepare (qcow2.c:878) > | | | | ->01.98% (734,003,200B) 0xA33FF2: qcow2_update_options (qcow2.c:1077) > | | | | ->01.98% (734,003,200B) 0xA34DBA: qcow2_do_open (qcow2.c:1358) > | | | | ->01.98% (734,003,200B) 0xA3559A: qcow2_open (qcow2.c:1514) > | | | | ->01.98% (734,003,200B) 0x9FB992: bdrv_open_driver (block.c:1109) > | | | | ->01.98% (734,003,200B) 0x9FC456: bdrv_open_common (block.c:1365) > | | | | ->01.98% (734,003,200B) 0x9FF866: bdrv_open_inherit (block.c:2542) > | | | | ->01.98% (734,003,200B) 0x9FFC5A: bdrv_open (block.c:2626) > | | | | ->01.98% (734,003,200B) in 2 places, all below massif's threshold (1.00%) > | | | | > | | | ->00.49% (183,500,800B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->00.00% (358,400B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->00.05% (17,301,504B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->01.10% (407,116,949B) 0x59E72DE: g_malloc0 (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->01.10% (407,116,949B) in 92 places, all below massif's threshold (1.00%) > | > ->00.33% (124,013,901B) in 1+ places, all below ms_print's threshold (01.00%) > 44 6,960,203,871 2,623,230,816 2,577,729,454 45,501,362 0 > 98.27% (2,577,729,454B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. > ->45.96% (1,205,547,303B) 0x59E7392: g_realloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->45.65% (1,197,564,832B) 0x59E7756: g_realloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | | ->28.14% (738,191,360B) 0x3AA99E: phys_section_add (exec.c:1275) > | | | ->28.14% (738,191,360B) 0x3AF086: dummy_section (exec.c:2644) > | | | ->28.14% (738,191,360B) 0x3AF306: mem_begin (exec.c:2680) > | | | ->28.12% (737,778,688B) 0x4384C6: memory_region_transaction_commit (memory.c:922) > | | | | ->18.56% (486,874,112B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) > | | | | | ->18.56% (486,874,112B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) > | | | | | ->17.49% (458,916,864B) 0x43D186: memory_region_add_subregion (memory.c:2154) > | | | | | | ->11.42% (299,446,272B) 0x92D63A: virtio_pci_modern_region_map (virtio-pci.c:1526) > | | | | | | | ->11.42% (299,446,272B) 0x92D722: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) > | | | | | | | ->02.85% (74,861,568B) 0x92DCB6: virtio_pci_device_plugged (virtio-pci.c:1657) > | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | | > | | | | | | | ->02.85% (74,861,568B) 0x92DCD2: virtio_pci_device_plugged (virtio-pci.c:1658) > | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | | > | | | | | | | ->02.85% (74,861,568B) 0x92DCEE: virtio_pci_device_plugged (virtio-pci.c:1659) > | | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | | > | | | | | | | ->02.85% (74,861,568B) 0x92DD0A: virtio_pci_device_plugged (virtio-pci.c:1660) > | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | > | | | | | | ->02.85% (74,861,568B) 0x86230A: msix_init (msix.c:333) > | | | | | | | ->02.85% (74,861,568B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->02.85% (74,861,568B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | > | | | | | | ->02.85% (74,861,568B) 0x86235E: msix_init (msix.c:336) > | | | | | | | ->02.85% (74,861,568B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->02.85% (74,861,568B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->02.85% (74,861,568B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->02.85% (74,861,568B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->02.85% (74,861,568B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->02.85% (74,861,568B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | > | | | | | | ->00.37% (9,747,456B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->01.07% (27,957,248B) 0x43D1F6: memory_region_add_subregion_overlap (memory.c:2163) > | | | | | ->01.07% (27,949,056B) 0x85F946: pci_bridge_init_alias (pci_bridge.c:157) > | | | | | | ->01.07% (27,949,056B) in 3 places, all below massif's threshold (1.00%) > | | | | | | > | | | | | ->00.00% (8,192B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->06.34% (166,302,720B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) > | | | | | ->06.34% (166,302,720B) 0x855E32: pci_init_bus_master (pci.c:92) > | | | | | ->06.34% (166,302,720B) 0x855F0A: pcibus_machine_done (pci.c:104) > | | | | | ->06.34% (166,302,720B) 0xB8E77A: notifier_list_notify (notify.c:40) > | | | | | ->06.34% (166,302,720B) 0x6F036E: qemu_run_machine_init_done_notifiers (vl.c:2701) > | | | | | ->06.34% (166,302,720B) 0x6F5DCA: main (vl.c:4743) > | | | | | > | | | | ->03.21% (84,187,136B) 0x43F016: address_space_init (memory.c:2596) > | | | | | ->03.21% (84,177,920B) 0x8590CA: do_pci_register_device (pci.c:1006) > | | | | | | ->03.21% (84,177,920B) 0x85C3EA: pci_qdev_realize (pci.c:1995) > | | | | | | ->02.85% (74,861,568B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->02.85% (74,861,568B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->02.85% (74,861,568B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->02.85% (74,861,568B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->02.85% (74,861,568B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->02.85% (74,861,568B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->02.85% (74,861,568B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->02.85% (74,861,568B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | ->02.85% (74,861,568B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->02.85% (74,861,568B) 0x6F5BBE: main (vl.c:4656) > | | | | | | | > | | | | | | ->00.36% (9,316,352B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->00.00% (9,216B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->00.02% (414,720B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | > | | | ->00.02% (412,672B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->17.51% (459,370,496B) 0x3A785A: phys_map_node_reserve (exec.c:251) > | | | ->17.51% (459,370,496B) 0x3A7CE2: phys_page_set (exec.c:307) > | | | ->17.51% (459,370,496B) 0x3AAF26: register_multipage (exec.c:1345) > | | | ->17.51% (459,370,496B) 0x3AB31E: mem_add (exec.c:1376) > | | | ->17.51% (459,223,040B) 0x437F52: address_space_update_topology_pass (memory.c:855) > | | | | ->17.51% (459,223,040B) 0x4382C2: address_space_update_topology (memory.c:889) > | | | | ->17.51% (459,223,040B) 0x438502: memory_region_transaction_commit (memory.c:925) > | | | | ->12.99% (340,668,416B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) > | | | | | ->12.99% (340,668,416B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) > | | | | | ->12.12% (317,812,736B) 0x43D186: memory_region_add_subregion (memory.c:2154) > | | | | | | ->07.87% (206,438,400B) 0x92D63A: virtio_pci_modern_region_map (virtio-pci.c:1526) > | | | | | | | ->07.87% (206,438,400B) 0x92D722: virtio_pci_modern_mem_region_map (virtio-pci.c:1540) > | | | | | | | ->01.97% (51,609,600B) 0x92DCB6: virtio_pci_device_plugged (virtio-pci.c:1657) > | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->01.97% (51,609,600B) 0x92DCD2: virtio_pci_device_plugged (virtio-pci.c:1658) > | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->01.97% (51,609,600B) 0x92DCEE: virtio_pci_device_plugged (virtio-pci.c:1659) > | | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | | > | | | | | | | ->01.97% (51,609,600B) 0x92DD0A: virtio_pci_device_plugged (virtio-pci.c:1660) > | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->01.97% (51,609,600B) 0x86230A: msix_init (msix.c:333) > | | | | | | | ->01.97% (51,609,600B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->01.97% (51,609,600B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->01.97% (51,609,600B) 0x86235E: msix_init (msix.c:336) > | | | | | | | ->01.97% (51,609,600B) 0x8624FE: msix_init_exclusive_bar (msix.c:371) > | | | | | | | ->01.97% (51,609,600B) 0x92DE8A: virtio_pci_device_plugged (virtio-pci.c:1688) > | | | | | | | ->01.97% (51,609,600B) 0x931A0A: virtio_bus_device_plugged (virtio-bus.c:74) > | | | | | | | ->01.97% (51,609,600B) 0x4F36AA: virtio_device_realize (virtio.c:2492) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->01.97% (51,609,600B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | | | | | | | ->01.97% (51,609,600B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | | | | | | | ->01.97% (51,609,600B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | > | | | | | | ->00.31% (8,155,136B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->00.87% (22,855,680B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->02.26% (59,277,312B) 0x43F016: address_space_init (memory.c:2596) > | | | | | ->02.25% (59,129,856B) 0x8590CA: do_pci_register_device (pci.c:1006) > | | | | | | ->02.25% (59,129,856B) 0x85C3EA: pci_qdev_realize (pci.c:1995) > | | | | | | ->01.97% (51,609,600B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | | | | | | | ->01.97% (51,609,600B) 0x78A496: device_set_realized (qdev.c:914) > | | | | | | | ->01.97% (51,609,600B) 0x9F59AA: property_set_bool (object.c:1886) > | | | | | | | ->01.97% (51,609,600B) 0x9F314E: object_property_set (object.c:1093) > | | | | | | | ->01.97% (51,609,600B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | | | | | | | ->01.97% (51,609,600B) 0x9F34FA: object_property_set_bool (object.c:1162) > | | | | | | | ->01.97% (51,609,600B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | | | | | | | ->01.97% (51,609,600B) 0x6EEE3A: device_init_func (vl.c:2336) > | | | | | | | ->01.97% (51,609,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | | ->01.97% (51,609,600B) 0x6F5BBE: main (vl.c:4656) > | | | | | | | > | | | | | | ->00.29% (7,520,256B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | | > | | | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->02.25% (59,129,856B) 0x43D3CE: memory_region_set_enabled (memory.c:2186) > | | | | | ->02.25% (59,129,856B) 0x855E32: pci_init_bus_master (pci.c:92) > | | | | | ->02.25% (59,129,856B) 0x855F0A: pcibus_machine_done (pci.c:104) > | | | | | ->02.25% (59,129,856B) 0xB8E77A: notifier_list_notify (notify.c:40) > | | | | | ->02.25% (59,129,856B) 0x6F036E: qemu_run_machine_init_done_notifiers (vl.c:2701) > | | | | | ->02.25% (59,129,856B) 0x6F5DCA: main (vl.c:4743) > | | | | | > | | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | > | | | ->00.01% (147,456B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->00.00% (2,976B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->00.30% (7,982,471B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->35.65% (935,163,904B) 0xB7444E: qemu_try_memalign (oslib-posix.c:106) > | ->34.99% (917,862,400B) 0xA91FF6: qemu_try_blockalign (io.c:2493) > | | ->34.98% (917,504,000B) 0xA50396: qcow2_cache_create (qcow2-cache.c:124) > | | | ->27.98% (734,003,200B) 0xA334F2: qcow2_update_options_prepare (qcow2.c:878) > | | | | ->27.98% (734,003,200B) 0xA33F86: qcow2_update_options (qcow2.c:1077) > | | | | ->27.98% (734,003,200B) 0xA34D4E: qcow2_do_open (qcow2.c:1358) > | | | | ->27.98% (734,003,200B) 0xA3552E: qcow2_open (qcow2.c:1514) > | | | | ->27.98% (734,003,200B) 0x9FB926: bdrv_open_driver (block.c:1109) > | | | | ->27.98% (734,003,200B) 0x9FC3EA: bdrv_open_common (block.c:1365) > | | | | ->27.98% (734,003,200B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) > | | | | ->27.98% (734,003,200B) 0x9FFBEE: bdrv_open (block.c:2626) > | | | | ->13.99% (367,001,600B) 0xA70FCA: blk_new_open (block-backend.c:267) > | | | | | ->13.99% (367,001,600B) 0x6D3E6A: blockdev_init (blockdev.c:588) > | | | | | | ->13.99% (367,001,600B) 0x6D52EA: drive_new (blockdev.c:1093) > | | | | | | ->13.99% (367,001,600B) 0x6E98DA: drive_init_func (vl.c:1157) > | | | | | | ->13.99% (367,001,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | | | | ->13.99% (367,001,600B) 0x6F577E: main (vl.c:4569) > | | | | | | > | | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->13.99% (367,001,600B) 0x9FEF4A: bdrv_append_temp_snapshot (block.c:2336) > | | | | ->13.99% (367,001,600B) 0x9FF996: bdrv_open_inherit (block.c:2585) > | | | | ->13.99% (367,001,600B) 0x9FFBEE: bdrv_open (block.c:2626) > | | | | ->13.99% (367,001,600B) 0xA70FCA: blk_new_open (block-backend.c:267) > | | | | ->13.99% (367,001,600B) 0x6D3E6A: blockdev_init (blockdev.c:588) > | | | | ->13.99% (367,001,600B) 0x6D52EA: drive_new (blockdev.c:1093) > | | | | ->13.99% (367,001,600B) 0x6E98DA: drive_init_func (vl.c:1157) > | | | | ->13.99% (367,001,600B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | | ->13.99% (367,001,600B) 0x6F577E: main (vl.c:4569) > | | | | > | | | ->07.00% (183,500,800B) 0xA33516: qcow2_update_options_prepare (qcow2.c:879) > | | | ->07.00% (183,500,800B) 0xA33F86: qcow2_update_options (qcow2.c:1077) > | | | ->07.00% (183,500,800B) 0xA34D4E: qcow2_do_open (qcow2.c:1358) > | | | ->07.00% (183,500,800B) 0xA3552E: qcow2_open (qcow2.c:1514) > | | | ->07.00% (183,500,800B) 0x9FB926: bdrv_open_driver (block.c:1109) > | | | ->07.00% (183,500,800B) 0x9FC3EA: bdrv_open_common (block.c:1365) > | | | ->07.00% (183,500,800B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) > | | | ->07.00% (183,500,800B) 0x9FFBEE: bdrv_open (block.c:2626) > | | | ->03.50% (91,750,400B) 0xA70FCA: blk_new_open (block-backend.c:267) > | | | | ->03.50% (91,750,400B) 0x6D3E6A: blockdev_init (blockdev.c:588) > | | | | | ->03.50% (91,750,400B) 0x6D52EA: drive_new (blockdev.c:1093) > | | | | | ->03.50% (91,750,400B) 0x6E98DA: drive_init_func (vl.c:1157) > | | | | | ->03.50% (91,750,400B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | | | ->03.50% (91,750,400B) 0x6F577E: main (vl.c:4569) > | | | | | > | | | | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | > | | | ->03.50% (91,750,400B) 0x9FEF4A: bdrv_append_temp_snapshot (block.c:2336) > | | | ->03.50% (91,750,400B) 0x9FF996: bdrv_open_inherit (block.c:2585) > | | | ->03.50% (91,750,400B) 0x9FFBEE: bdrv_open (block.c:2626) > | | | ->03.50% (91,750,400B) 0xA70FCA: blk_new_open (block-backend.c:267) > | | | ->03.50% (91,750,400B) 0x6D3E6A: blockdev_init (blockdev.c:588) > | | | ->03.50% (91,750,400B) 0x6D52EA: drive_new (blockdev.c:1093) > | | | ->03.50% (91,750,400B) 0x6E98DA: drive_init_func (vl.c:1157) > | | | ->03.50% (91,750,400B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | | | ->03.50% (91,750,400B) 0x6F577E: main (vl.c:4569) > | | | > | | ->00.01% (358,400B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->00.66% (17,301,504B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->13.07% (342,746,525B) 0x59E72DE: g_malloc0 (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->05.97% (156,494,936B) 0x79C4D2: rom_add_file (loader.c:930) > | | ->05.97% (156,494,936B) 0x797306: load_image_targphys_as (loader.c:153) > | | ->05.97% (156,494,936B) 0x79725E: load_image_targphys (loader.c:139) > | | ->05.93% (155,589,632B) 0x515706: ppc_spapr_init (spapr.c:2451) > | | | ->05.93% (155,589,632B) 0x79669A: machine_run_board_init (machine.c:760) > | | | ->05.93% (155,589,632B) 0x6F5AD2: main (vl.c:4630) > | | | > | | ->00.03% (905,304B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->03.20% (84,050,584B) 0x59E76C6: g_malloc0_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | | ->02.42% (63,438,320B) 0x3AF2DE: mem_begin (exec.c:2677) > | | | ->02.42% (63,402,856B) 0x4384C6: memory_region_transaction_commit (memory.c:922) > | | | | ->01.60% (41,840,744B) 0x43D07E: memory_region_update_container_subregions (memory.c:2136) > | | | | | ->01.60% (41,840,744B) 0x43D11E: memory_region_add_subregion_common (memory.c:2146) > | | | | | ->01.50% (39,438,168B) 0x43D186: memory_region_add_subregion (memory.c:2154) > | | | | | | ->01.50% (39,438,168B) in 10 places, all below massif's threshold (1.00%) > | | | | | | > | | | | | ->00.09% (2,402,576B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | | > | | | | ->00.82% (21,562,112B) in 1+ places, all below ms_print's threshold (01.00%) > | | | | > | | | ->00.00% (35,464B) in 1+ places, all below ms_print's threshold (01.00%) > | | | > | | ->00.79% (20,612,264B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->02.15% (56,325,805B) in 90 places, all below massif's threshold (1.00%) > | | > | ->01.75% (45,875,200B) 0x4F289A: virtio_init (virtio.c:2249) > | ->01.75% (45,875,200B) 0x4759E2: virtio_blk_device_realize (virtio-blk.c:946) > | ->01.75% (45,875,200B) 0x4F3672: virtio_device_realize (virtio.c:2485) > | ->01.75% (45,875,200B) 0x78A496: device_set_realized (qdev.c:914) > | ->01.75% (45,875,200B) 0x9F59AA: property_set_bool (object.c:1886) > | ->01.75% (45,875,200B) 0x9F314E: object_property_set (object.c:1093) > | ->01.75% (45,875,200B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | ->01.75% (45,875,200B) 0x9F34FA: object_property_set_bool (object.c:1162) > | ->01.75% (45,875,200B) 0x92EDD2: virtio_blk_pci_realize (virtio-pci.c:1979) > | ->01.75% (45,875,200B) 0x92E67E: virtio_pci_realize (virtio-pci.c:1857) > | ->01.75% (45,875,200B) 0x85C42E: pci_qdev_realize (pci.c:2002) > | ->01.75% (45,875,200B) 0x92EB72: virtio_pci_dc_realize (virtio-pci.c:1934) > | ->01.75% (45,875,200B) 0x78A496: device_set_realized (qdev.c:914) > | ->01.75% (45,875,200B) 0x9F59AA: property_set_bool (object.c:1886) > | ->01.75% (45,875,200B) 0x9F314E: object_property_set (object.c:1093) > | ->01.75% (45,875,200B) 0x9F76EA: object_property_set_qobject (qom-qobject.c:27) > | ->01.75% (45,875,200B) 0x9F34FA: object_property_set_bool (object.c:1162) > | ->01.75% (45,875,200B) 0x6E2222: qdev_device_add (qdev-monitor.c:652) > | ->01.75% (45,875,200B) 0x6EEE3A: device_init_func (vl.c:2336) > | ->01.75% (45,875,200B) 0xB9249A: qemu_opts_foreach (qemu-option.c:1104) > | ->01.75% (45,875,200B) 0x6F5BBE: main (vl.c:4656) > | > ->01.78% (46,585,929B) 0x59E7236: g_malloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->01.16% (30,407,584B) 0x59E7636: g_malloc_n (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | | ->01.10% (28,819,480B) 0x4372C6: generate_memory_topology (memory.c:709) > | | | ->01.10% (28,819,480B) 0x438296: address_space_update_topology (memory.c:886) > | | | ->01.10% (28,819,480B) 0x438502: memory_region_transaction_commit (memory.c:925) > | | | ->01.10% (28,819,480B) in 4 places, all below massif's threshold (1.00%) > | | | > | | ->00.06% (1,588,104B) in 1+ places, all below ms_print's threshold (01.00%) > | | > | ->00.62% (16,178,345B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->01.75% (45,875,200B) 0x59E74DE: g_try_malloc (in /lib/powerpc64le-linux-gnu/libglib-2.0.so.0.5000.2) > | ->01.75% (45,875,200B) 0xA3D99A: qcow2_refcount_init (qcow2-refcount.c:109) > | | ->01.75% (45,875,200B) 0xA34D82: qcow2_do_open (qcow2.c:1366) > | | ->01.75% (45,875,200B) 0xA3552E: qcow2_open (qcow2.c:1514) > | | ->01.75% (45,875,200B) 0x9FB926: bdrv_open_driver (block.c:1109) > | | ->01.75% (45,875,200B) 0x9FC3EA: bdrv_open_common (block.c:1365) > | | ->01.75% (45,875,200B) 0x9FF7FA: bdrv_open_inherit (block.c:2542) > | | ->01.75% (45,875,200B) 0x9FFBEE: bdrv_open (block.c:2626) > | | ->01.75% (45,875,200B) in 2 places, all below massif's threshold (1.00%) > | | > | ->00.00% (0B) in 1+ places, all below ms_print's threshold (01.00%) > | > ->00.07% (1,810,593B) in 1+ places, all below ms_print's threshold (01.00%) -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-24 12:30 ` David Gibson @ 2017-08-25 8:31 ` Alexey Kardashevskiy 2017-08-25 8:53 ` Paolo Bonzini ` (2 more replies) 2017-08-25 10:48 ` [Qemu-devel] Memory use with >100 virtio devices Paolo Bonzini 1 sibling, 3 replies; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-25 8:31 UTC (permalink / raw) To: qemu-devel; +Cc: Alexey Kardashevskiy, David Gibson, Paolo Bonzini Otherwise old dispatch holds way too much memory before RCU gets a chance to free old dispatches. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- This is a follow-up to the "Memory use with >100 virtio devices" thread. I assume this is a dirty hack (which fixes the problem though) and I wonder what the proper solution would be. Thanks. What happens here is that every virtio block device creates 2 address spaces - for modern config space (called "virtio-pci-cfg-as") and for busmaster (common pci thing, called after the device name, in my case "virtio-blk-pci"). Each address_space_init() updates topology for _every_ address space. Every topology update (address_space_update_topology()) creates a new dispatch tree - AddressSpaceDispatch with nodes (1KB) and sections (48KB) and destroys the old one. However the dispatch destructor is postponed via RCU which does not get a chance to execute until the machine is initialized but before we get there, memory is not returned to the pool, and this is a lot of memory which grows n^2. Interestingly, mem_add() from exec.c is called twice: as as->dispatch_listener.region_add() and as as->dispatch_listener.region_nop() - I did not understand the trick but it does not work if I remove the .region_nop() hook. How does it work? :) --- exec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exec.c b/exec.c index 01ac21e3cd..ea5f3eb209 100644 --- a/exec.c +++ b/exec.c @@ -2707,7 +2707,7 @@ static void mem_commit(MemoryListener *listener) atomic_rcu_set(&as->dispatch, next); if (cur) { - call_rcu(cur, address_space_dispatch_free, rcu); + address_space_dispatch_free(cur); } } -- 2.11.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy @ 2017-08-25 8:53 ` Paolo Bonzini 2017-08-25 9:22 ` Peter Maydell 2017-08-29 8:55 ` Alexey Kardashevskiy 2017-08-25 8:55 ` Paolo Bonzini 2017-08-25 9:01 ` Paolo Bonzini 2 siblings, 2 replies; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 8:53 UTC (permalink / raw) To: Alexey Kardashevskiy, qemu-devel; +Cc: David Gibson On 25/08/2017 10:31, Alexey Kardashevskiy wrote: > Otherwise old dispatch holds way too much memory before RCU gets > a chance to free old dispatches. > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > > This is a follow-up to the "Memory use with >100 virtio devices" > thread. > > I assume this is a dirty hack (which fixes the problem though) This doesn't work. AddressSpaceDispatch can be accessed outside the big QEMU lock, which is why it is destroyed via call_rcu. The solution is to: 1) share the FlatView structures if they refer to the same root memory region; 2) have one AddressSpaceDispatch per FlatView instead of one per AddressSpace, so that FlatView reference counting takes care of clearing the AddressSpaceDispatch too. Neither is particularly hard. The second requires getting rid of the as->dispatch_listener and "hard coding" the creation of the AddressSpaceDispatch from the FlatView in memory.c. Paolo > and I wonder what the proper solution would be. Thanks. > > > What happens here is that every virtio block device creates 2 address > spaces - for modern config space (called "virtio-pci-cfg-as") and > for busmaster (common pci thing, called after the device name, > in my case "virtio-blk-pci"). > > Each address_space_init() updates topology for _every_ address space. > Every topology update (address_space_update_topology()) creates a new > dispatch tree - AddressSpaceDispatch with nodes (1KB) and > sections (48KB) and destroys the old one. > > However the dispatch destructor is postponed via RCU which does not > get a chance to execute until the machine is initialized but before > we get there, memory is not returned to the pool, and this is a lot > of memory which grows n^2. > > > Interestingly, mem_add() from exec.c is called twice: > as as->dispatch_listener.region_add() and > as as->dispatch_listener.region_nop() - I did not understand > the trick but it does not work if I remove the .region_nop() hook. > How does it work? :) > > --- > exec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/exec.c b/exec.c > index 01ac21e3cd..ea5f3eb209 100644 > --- a/exec.c > +++ b/exec.c > @@ -2707,7 +2707,7 @@ static void mem_commit(MemoryListener *listener) > > atomic_rcu_set(&as->dispatch, next); > if (cur) { > - call_rcu(cur, address_space_dispatch_free, rcu); > + address_space_dispatch_free(cur); > } > } > > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 8:53 ` Paolo Bonzini @ 2017-08-25 9:22 ` Peter Maydell 2017-08-25 9:57 ` Paolo Bonzini 2017-08-29 8:55 ` Alexey Kardashevskiy 1 sibling, 1 reply; 19+ messages in thread From: Peter Maydell @ 2017-08-25 9:22 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Alexey Kardashevskiy, QEMU Developers, David Gibson On 25 August 2017 at 09:53, Paolo Bonzini <pbonzini@redhat.com> wrote: > The solution is to: 1) share the FlatView structures if they refer to > the same root memory region; 2) have one AddressSpaceDispatch per > FlatView instead of one per AddressSpace, so that FlatView reference > counting takes care of clearing the AddressSpaceDispatch too. Neither > is particularly hard. If we did this we could get rid of address_space_init_shareable(), right? (It's a bit of a cheesy hack aimed at avoiding having duplicate address space structures for the same root memory region, but if the underlying code is better at not duplicating all the data structures unless necessary then the benefit of having the separate API goes away I think.) thanks -- PMM ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 9:22 ` Peter Maydell @ 2017-08-25 9:57 ` Paolo Bonzini 2017-08-25 13:19 ` David Gibson 0 siblings, 1 reply; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 9:57 UTC (permalink / raw) To: Peter Maydell; +Cc: Alexey Kardashevskiy, QEMU Developers, David Gibson On 25/08/2017 11:22, Peter Maydell wrote: > On 25 August 2017 at 09:53, Paolo Bonzini <pbonzini@redhat.com> wrote: >> The solution is to: 1) share the FlatView structures if they refer to >> the same root memory region; 2) have one AddressSpaceDispatch per >> FlatView instead of one per AddressSpace, so that FlatView reference >> counting takes care of clearing the AddressSpaceDispatch too. Neither >> is particularly hard. > If we did this we could get rid of address_space_init_shareable(), > right? (It's a bit of a cheesy hack aimed at avoiding having duplicate > address space structures for the same root memory region, but if > the underlying code is better at not duplicating all the data > structures unless necessary then the benefit of having the > separate API goes away I think.) Yes, indeed. Paolo ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 9:57 ` Paolo Bonzini @ 2017-08-25 13:19 ` David Gibson 2017-08-25 13:46 ` Peter Maydell 2017-08-25 14:04 ` Paolo Bonzini 0 siblings, 2 replies; 19+ messages in thread From: David Gibson @ 2017-08-25 13:19 UTC (permalink / raw) To: Paolo Bonzini; +Cc: Peter Maydell, Alexey Kardashevskiy, QEMU Developers [-- Attachment #1: Type: text/plain, Size: 1201 bytes --] On Fri, Aug 25, 2017 at 11:57:26AM +0200, Paolo Bonzini wrote: > On 25/08/2017 11:22, Peter Maydell wrote: > > On 25 August 2017 at 09:53, Paolo Bonzini <pbonzini@redhat.com> wrote: > >> The solution is to: 1) share the FlatView structures if they refer to > >> the same root memory region; 2) have one AddressSpaceDispatch per > >> FlatView instead of one per AddressSpace, so that FlatView reference > >> counting takes care of clearing the AddressSpaceDispatch too. Neither > >> is particularly hard. > > If we did this we could get rid of address_space_init_shareable(), > > right? (It's a bit of a cheesy hack aimed at avoiding having duplicate > > address space structures for the same root memory region, but if > > the underlying code is better at not duplicating all the data > > structures unless necessary then the benefit of having the > > separate API goes away I think.) > > Yes, indeed. Hm. Why do we need to construct full ASes for virtio-blk, rather than just MRs? -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 13:19 ` David Gibson @ 2017-08-25 13:46 ` Peter Maydell 2017-08-25 14:04 ` Paolo Bonzini 1 sibling, 0 replies; 19+ messages in thread From: Peter Maydell @ 2017-08-25 13:46 UTC (permalink / raw) To: David Gibson; +Cc: Paolo Bonzini, Alexey Kardashevskiy, QEMU Developers On 25 August 2017 at 14:19, David Gibson <david@gibson.dropbear.id.au> wrote: > Hm. Why do we need to construct full ASes for virtio-blk, rather than > just MRs? It's the PCI layer that's doing it, but the overall reason is because virtio-blk needs to make memory transactions (DMA reads and writes). The AddressSpace is our construct for "thing you use to be able to efficiently make memory transactions on a MemoryRegion". (This is what the FlatView and AddressSpaceDispatch data structures are for -- they let you efficiently go from "write to address 0x4000 in this thing" to the actual destination RAM or device read/write pointers.) thanks -- PMM ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 13:19 ` David Gibson 2017-08-25 13:46 ` Peter Maydell @ 2017-08-25 14:04 ` Paolo Bonzini 1 sibling, 0 replies; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 14:04 UTC (permalink / raw) To: David Gibson; +Cc: Peter Maydell, Alexey Kardashevskiy, QEMU Developers [-- Attachment #1: Type: text/plain, Size: 1170 bytes --] On 25/08/2017 15:19, David Gibson wrote: > On Fri, Aug 25, 2017 at 11:57:26AM +0200, Paolo Bonzini wrote: >> On 25/08/2017 11:22, Peter Maydell wrote: >>> On 25 August 2017 at 09:53, Paolo Bonzini <pbonzini@redhat.com> wrote: >>>> The solution is to: 1) share the FlatView structures if they refer to >>>> the same root memory region; 2) have one AddressSpaceDispatch per >>>> FlatView instead of one per AddressSpace, so that FlatView reference >>>> counting takes care of clearing the AddressSpaceDispatch too. Neither >>>> is particularly hard. >>> If we did this we could get rid of address_space_init_shareable(), >>> right? (It's a bit of a cheesy hack aimed at avoiding having duplicate >>> address space structures for the same root memory region, but if >>> the underlying code is better at not duplicating all the data >>> structures unless necessary then the benefit of having the >>> separate API goes away I think.) >> >> Yes, indeed. > > Hm. Why do we need to construct full ASes for virtio-blk, rather than > just MRs? It's an artifact of how virtio_address_space_read and virtio_address_space_write are implemented. Paolo [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 8:53 ` Paolo Bonzini 2017-08-25 9:22 ` Peter Maydell @ 2017-08-29 8:55 ` Alexey Kardashevskiy 1 sibling, 0 replies; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-29 8:55 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: David Gibson, Peter Maydell On 25/08/17 18:53, Paolo Bonzini wrote: > On 25/08/2017 10:31, Alexey Kardashevskiy wrote: >> Otherwise old dispatch holds way too much memory before RCU gets >> a chance to free old dispatches. >> >> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >> --- >> >> This is a follow-up to the "Memory use with >100 virtio devices" >> thread. >> >> I assume this is a dirty hack (which fixes the problem though) > > This doesn't work. AddressSpaceDispatch can be accessed outside the big > QEMU lock, which is why it is destroyed via call_rcu. > > The solution is to: 1) share the FlatView structures if they refer to > the same root memory region; 2) have one AddressSpaceDispatch per > FlatView instead of one per AddressSpace, so that FlatView reference > counting takes care of clearing the AddressSpaceDispatch too. Neither > is particularly hard. The second requires getting rid of the > as->dispatch_listener and "hard coding" the creation of the > AddressSpaceDispatch from the FlatView in memory.c. While I am trying this approach, here is a cheap workaround - diff --git a/vl.c b/vl.c index 8e247cc2a2..4d95bc2a6a 100644 --- a/vl.c +++ b/vl.c @@ -4655,12 +4655,16 @@ int main(int argc, char **argv, char **envp) igd_gfx_passthru(); /* init generic devices */ + memory_region_transaction_begin(); + rom_set_order_override(FW_CFG_ORDER_OVERRIDE_DEVICE); if (qemu_opts_foreach(qemu_find_opts("device"), device_init_func, NULL, NULL)) { exit(1); } + memory_region_transaction_commit(); + cpu_synchronize_all_post_init(); rom_reset_order_override(); Just for self-education - how dirty is this hack? This effectively postpones all dispatch trees allocation/disposal till MR transation depth is 0 (which happens in this memory_region_transaction_commit()), for 500 virtio devices it reduces the amount of resident RAM from 45GB to 11GB with 2GB guest, good for speed too - time to build a machine is reduced from 4:00 to 1:20. > > Paolo > >> and I wonder what the proper solution would be. Thanks. >> >> >> What happens here is that every virtio block device creates 2 address >> spaces - for modern config space (called "virtio-pci-cfg-as") and >> for busmaster (common pci thing, called after the device name, >> in my case "virtio-blk-pci"). >> >> Each address_space_init() updates topology for _every_ address space. >> Every topology update (address_space_update_topology()) creates a new >> dispatch tree - AddressSpaceDispatch with nodes (1KB) and >> sections (48KB) and destroys the old one. >> >> However the dispatch destructor is postponed via RCU which does not >> get a chance to execute until the machine is initialized but before >> we get there, memory is not returned to the pool, and this is a lot >> of memory which grows n^2. >> >> >> Interestingly, mem_add() from exec.c is called twice: >> as as->dispatch_listener.region_add() and >> as as->dispatch_listener.region_nop() - I did not understand >> the trick but it does not work if I remove the .region_nop() hook. >> How does it work? :) >> >> --- >> exec.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/exec.c b/exec.c >> index 01ac21e3cd..ea5f3eb209 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -2707,7 +2707,7 @@ static void mem_commit(MemoryListener *listener) >> >> atomic_rcu_set(&as->dispatch, next); >> if (cur) { >> - call_rcu(cur, address_space_dispatch_free, rcu); >> + address_space_dispatch_free(cur); >> } >> } >> >> > -- Alexey ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy 2017-08-25 8:53 ` Paolo Bonzini @ 2017-08-25 8:55 ` Paolo Bonzini 2017-08-25 9:01 ` Paolo Bonzini 2 siblings, 0 replies; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 8:55 UTC (permalink / raw) To: Alexey Kardashevskiy, qemu-devel; +Cc: David Gibson On 25/08/2017 10:31, Alexey Kardashevskiy wrote: > > Interestingly, mem_add() from exec.c is called twice: > as as->dispatch_listener.region_add() and > as as->dispatch_listener.region_nop() - I did not understand > the trick but it does not work if I remove the .region_nop() hook. > How does it work? :) Didn't note this. The hooks are: - region_add: a new MemoryRegionSection appeared compared to the previous FlatView - region_nop: a region that was in the previous FlatView stayed there - region_del: a MemoryRegionSection disappeared compared to the previous FlatView Because the AddressSpaceDispatch is rebuilt from scratch, it cares about both new (region_add) and existing (region_nop) regions. Paolo ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy 2017-08-25 8:53 ` Paolo Bonzini 2017-08-25 8:55 ` Paolo Bonzini @ 2017-08-25 9:01 ` Paolo Bonzini 2017-08-25 9:16 ` Alexey Kardashevskiy 2 siblings, 1 reply; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 9:01 UTC (permalink / raw) To: Alexey Kardashevskiy, qemu-devel; +Cc: David Gibson On 25/08/2017 10:31, Alexey Kardashevskiy wrote: > Each address_space_init() updates topology for _every_ address space. And finally, does this patch help with the above? diff --git a/memory.c b/memory.c index c0adc35..97c16cc 100644 --- a/memory.c +++ b/memory.c @@ -2607,10 +2607,16 @@ void memory_region_invalidate_mmio_ptr(MemoryRegion *mr, hwaddr offset, RUN_ON_CPU_HOST_PTR(invalidate_data)); } +static void address_space_rebuild(AddressSpace *as) +{ + MEMORY_LISTENER_CALL(as, begin, Forward); + address_space_update_topology(as); + MEMORY_LISTENER_CALL(as, commit, Forward); +} + void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) { memory_region_ref(root); - memory_region_transaction_begin(); as->ref_count = 1; as->root = root; as->malloced = false; @@ -2622,8 +2628,7 @@ void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); as->name = g_strdup(name ? name : "anonymous"); address_space_init_dispatch(as); - memory_region_update_pending |= root->enabled; - memory_region_transaction_commit(); + address_space_rebuild(as); } static void do_address_space_destroy(AddressSpace *as) Completely untested because vacation is coming. Thanks, Paolo ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 9:01 ` Paolo Bonzini @ 2017-08-25 9:16 ` Alexey Kardashevskiy 2017-08-25 9:58 ` Paolo Bonzini 0 siblings, 1 reply; 19+ messages in thread From: Alexey Kardashevskiy @ 2017-08-25 9:16 UTC (permalink / raw) To: Paolo Bonzini, qemu-devel; +Cc: David Gibson On 25/08/17 19:01, Paolo Bonzini wrote: > On 25/08/2017 10:31, Alexey Kardashevskiy wrote: >> Each address_space_init() updates topology for _every_ address space. > > And finally, does this patch help with the above? > > diff --git a/memory.c b/memory.c > index c0adc35..97c16cc 100644 > --- a/memory.c > +++ b/memory.c > @@ -2607,10 +2607,16 @@ void memory_region_invalidate_mmio_ptr(MemoryRegion *mr, hwaddr offset, > RUN_ON_CPU_HOST_PTR(invalidate_data)); > } > > +static void address_space_rebuild(AddressSpace *as) > +{ > + MEMORY_LISTENER_CALL(as, begin, Forward); > + address_space_update_topology(as); > + MEMORY_LISTENER_CALL(as, commit, Forward); > +} > + > void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) > { > memory_region_ref(root); > - memory_region_transaction_begin(); > as->ref_count = 1; > as->root = root; > as->malloced = false; > @@ -2622,8 +2628,7 @@ void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) > QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); > as->name = g_strdup(name ? name : "anonymous"); > address_space_init_dispatch(as); > - memory_region_update_pending |= root->enabled; > - memory_region_transaction_commit(); > + address_space_rebuild(as); > } > > static void do_address_space_destroy(AddressSpace *as) > > > Completely untested because vacation is coming. Friday night arrived here already ;) The patch did not help though (I also had to define section-less MEMORY_LISTENER_CALL()). I'll look into your first suggestion on Monday. -- Alexey ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately 2017-08-25 9:16 ` Alexey Kardashevskiy @ 2017-08-25 9:58 ` Paolo Bonzini 0 siblings, 0 replies; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 9:58 UTC (permalink / raw) To: Alexey Kardashevskiy, qemu-devel; +Cc: David Gibson On 25/08/2017 11:16, Alexey Kardashevskiy wrote: > On 25/08/17 19:01, Paolo Bonzini wrote: >> On 25/08/2017 10:31, Alexey Kardashevskiy wrote: >>> Each address_space_init() updates topology for _every_ address space. >> >> And finally, does this patch help with the above? >> >> diff --git a/memory.c b/memory.c >> index c0adc35..97c16cc 100644 >> --- a/memory.c >> +++ b/memory.c >> @@ -2607,10 +2607,16 @@ void memory_region_invalidate_mmio_ptr(MemoryRegion *mr, hwaddr offset, >> RUN_ON_CPU_HOST_PTR(invalidate_data)); >> } >> >> +static void address_space_rebuild(AddressSpace *as) >> +{ >> + MEMORY_LISTENER_CALL(as, begin, Forward); >> + address_space_update_topology(as); >> + MEMORY_LISTENER_CALL(as, commit, Forward); >> +} >> + >> void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) >> { >> memory_region_ref(root); >> - memory_region_transaction_begin(); >> as->ref_count = 1; >> as->root = root; >> as->malloced = false; >> @@ -2622,8 +2628,7 @@ void address_space_init(AddressSpace *as, MemoryRegion *root, const char *name) >> QTAILQ_INSERT_TAIL(&address_spaces, as, address_spaces_link); >> as->name = g_strdup(name ? name : "anonymous"); >> address_space_init_dispatch(as); >> - memory_region_update_pending |= root->enabled; >> - memory_region_transaction_commit(); >> + address_space_rebuild(as); >> } >> >> static void do_address_space_destroy(AddressSpace *as) >> >> >> Completely untested because vacation is coming. > > > Friday night arrived here already ;) > > The patch did not help though (I also had to define section-less > MEMORY_LISTENER_CALL()). I'll look into your first suggestion on Monday. Note that this is not a full solution, only for the O(n^2) transaction commits. Paolo ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] Memory use with >100 virtio devices 2017-08-24 12:30 ` David Gibson 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy @ 2017-08-25 10:48 ` Paolo Bonzini 1 sibling, 0 replies; 19+ messages in thread From: Paolo Bonzini @ 2017-08-25 10:48 UTC (permalink / raw) To: David Gibson, Alexey Kardashevskiy Cc: Stefan Hajnoczi, Gerd Hoffmann, qemu-devel@nongnu.org, Michael S. Tsirkin On 24/08/2017 14:30, David Gibson wrote: >> >> Ideas what to tweak or what valgrind tool to try? > valgrind probably isn't that useful at this point. I think we need to > instrument bits of the code to find what the O(n^2) algo is and fix it. > > Seems to me checking if the address_spaces list is growing to O(n^2) > entries would be a good place to start. The address spaces are O(n) (and so are the FlatView and the dispatch tries), but each of them has O(n) size. Eventually we use O(n^2) memory, but we build them O(n) times---which is expensive and also means, due to RCU, that there can be a short amount of time where it is between O(n^2) and O(n^3). The scheme I suggested elsewhere in the thread should cut one "n", by sharing one FlatViews and dispatch trie across all AddressSpaces. Paolo ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2017-08-29 8:55 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-18 5:39 [Qemu-devel] Memory use with >100 virtio devices Alexey Kardashevskiy 2017-08-18 13:18 ` Stefan Hajnoczi 2017-08-21 4:31 ` David Gibson 2017-08-21 5:50 ` Alexey Kardashevskiy 2017-08-24 9:48 ` Alexey Kardashevskiy 2017-08-24 12:30 ` David Gibson 2017-08-25 8:31 ` [Qemu-devel] [RFC PATCH qemu] exec: Destroy dispatch immediately Alexey Kardashevskiy 2017-08-25 8:53 ` Paolo Bonzini 2017-08-25 9:22 ` Peter Maydell 2017-08-25 9:57 ` Paolo Bonzini 2017-08-25 13:19 ` David Gibson 2017-08-25 13:46 ` Peter Maydell 2017-08-25 14:04 ` Paolo Bonzini 2017-08-29 8:55 ` Alexey Kardashevskiy 2017-08-25 8:55 ` Paolo Bonzini 2017-08-25 9:01 ` Paolo Bonzini 2017-08-25 9:16 ` Alexey Kardashevskiy 2017-08-25 9:58 ` Paolo Bonzini 2017-08-25 10:48 ` [Qemu-devel] Memory use with >100 virtio devices Paolo Bonzini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).