* [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: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 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: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
* 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
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).