Skip to content
  • King Wang's avatar
    838ec117
    memory: unref the memory region in simplify flatview · 838ec117
    King Wang authored
    
    
    The memory region reference is increased when insert a range
    into flatview range array, then decreased by destroy flatview.
    If some flat range merged by flatview_simplify, the memory region
    reference can not be decreased by destroy flatview any more.
    
    In this case, start virtual machine by the command line:
    qemu-system-x86_64
    -name guest=ubuntu,debug-threads=on
    -machine pc,accel=kvm,usb=off,dump-guest-core=off
    -cpu host
    -m 16384
    -realtime mlock=off
    -smp 8,sockets=2,cores=4,threads=1
    -object memory-backend-file,id=ram-node0,prealloc=yes,mem-path=/dev/hugepages,share=yes,size=8589934592
    -numa node,nodeid=0,cpus=0-3,memdev=ram-node0
    -object memory-backend-file,id=ram-node1,prealloc=yes,mem-path=/dev/hugepages,share=yes,size=8589934592
    -numa node,nodeid=1,cpus=4-7,memdev=ram-node1
    -no-user-config
    -nodefaults
    -rtc base=utc
    -no-shutdown
    -boot strict=on
    -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2
    -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x2
    -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3
    -drive file=ubuntu.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,cache=none,aio=native
    -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
    -chardev pty,id=charserial0
    -device isa-serial,chardev=charserial0,id=serial0
    -device usb-tablet,id=input0,bus=usb.0,port=1
    -vnc 0.0.0.0:0
    -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x5
    -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
    -msg timestamp=on
    
    And run the script in guest OS:
    while true
    do
        setpci -s 00:06.0 04.b=03
    	setpci -s 00:06.0 04.b=07
    done
    
    I found the reference of node0 HostMemoryBackendFile is a big one.
    (gdb) p numa_info[0]->node_memdev->parent.ref
    $6 = 1636278
    (gdb)
    
    Signed-off-by: default avatarKing <Wang&lt;king.wang@huawei.com>
    Message-Id: <20190712065241.11784-1-king.wang@huawei.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    838ec117
    memory: unref the memory region in simplify flatview
    King Wang authored
    
    
    The memory region reference is increased when insert a range
    into flatview range array, then decreased by destroy flatview.
    If some flat range merged by flatview_simplify, the memory region
    reference can not be decreased by destroy flatview any more.
    
    In this case, start virtual machine by the command line:
    qemu-system-x86_64
    -name guest=ubuntu,debug-threads=on
    -machine pc,accel=kvm,usb=off,dump-guest-core=off
    -cpu host
    -m 16384
    -realtime mlock=off
    -smp 8,sockets=2,cores=4,threads=1
    -object memory-backend-file,id=ram-node0,prealloc=yes,mem-path=/dev/hugepages,share=yes,size=8589934592
    -numa node,nodeid=0,cpus=0-3,memdev=ram-node0
    -object memory-backend-file,id=ram-node1,prealloc=yes,mem-path=/dev/hugepages,share=yes,size=8589934592
    -numa node,nodeid=1,cpus=4-7,memdev=ram-node1
    -no-user-config
    -nodefaults
    -rtc base=utc
    -no-shutdown
    -boot strict=on
    -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2
    -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x2
    -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3
    -drive file=ubuntu.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,cache=none,aio=native
    -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
    -chardev pty,id=charserial0
    -device isa-serial,chardev=charserial0,id=serial0
    -device usb-tablet,id=input0,bus=usb.0,port=1
    -vnc 0.0.0.0:0
    -device VGA,id=video0,vgamem_mb=16,bus=pci.0,addr=0x5
    -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
    -msg timestamp=on
    
    And run the script in guest OS:
    while true
    do
        setpci -s 00:06.0 04.b=03
    	setpci -s 00:06.0 04.b=07
    done
    
    I found the reference of node0 HostMemoryBackendFile is a big one.
    (gdb) p numa_info[0]->node_memdev->parent.ref
    $6 = 1636278
    (gdb)
    
    Signed-off-by: default avatarKing <Wang&lt;king.wang@huawei.com>
    Message-Id: <20190712065241.11784-1-king.wang@huawei.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading