Bug 726020

Summary: Fix memleaks in all virtio devices
Product: Red Hat Enterprise Linux 6 Reporter: Amit Shah <amit.shah>
Component: qemu-kvmAssignee: Amit Shah <amit.shah>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.2CC: juzhang, mkenneth, shu, tburke, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-0.12.1.2-2.179.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-12-06 15:54:53 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Amit Shah 2011-07-27 10:31:11 UTC
Description of problem:

virtio_cleanup() is supposed to reverse the mallocs in virtio_common_init().  However, it doesn't free up RAM allocated for device structures (VirtIOBlock, VirtIOBalloon, VirtIOSerial, VirtIONet) which embed the VirtIODevice struct.

This means all the virtio devices leak memory on unplug or qemu exit.

Comment 7 Shaolong Hu 2011-09-09 10:16:03 UTC
Since there is also memory leak in virtio-blk and virtio-balloon which is fixed on qemu-kvm-0.12.1.2-2.179.el6, choose virtio-net to verify this bug.


Steps to reproduce and verify:
------------------------------------
1.Disable as more services as possible in level 3 and init 3:
[root@localhost ~]# ls /etc/rc.d/rc3.d/
K01libvirt-guests  K05atd        K30postfix         K50snmpd       K74acpid      K75quota_nld  K83rpcidmapd       K85messagebus   K88iscsi    K92ip6tables     S05cgconfig
K01smartd          K10psacct     K30spice-vdagentd  K50snmptrapd   K74haldaemon  K75udev-post  K84NetworkManager  K86cgred        K88rsyslog  K92iptables      S13rpcbind
K02avahi-daemon    K10saslauthd  K46radvd           K60crond       K74ntpd       K80kdump      K84wpa_supplicant  K87irqbalance   K89iscsid   K99cpuspeed      S84ksm
K02rhsmcertd       K16abrtd      K50dnsmasq         K60nfs         K75netfs      K83nfslock    K85ebtables        K87restorecond  K89rdisc    K99lvm2-monitor  S85ksmtuned
K03rhnsd           K25sshd       K50netconsole      K69rpcsvcgssd  K75ntpdate    K83rpcgssd    K85mdmonitor       K88auditd       K90network  K99sysstat       S99local

2.Make sure top suggests there are not other memory consuming processes:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND            
    1 root      20   0 19204 1492 1208 S  0.0  0.0   0:00.62 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

3.Boot guest, do 300 times virtio-net-pci device hotplug/unplug, use "free -m" when:
  1) before start qemu
  2) before hotplug/unplug
  3) after hotplug/unplug
  4) after exit qemu
  each time before "free -m", do "echo 3 > /proc/sys/vm/drop_caches" first.


Actual results:
---------------------
reproduced on qemu-kvm-0.12.1.2-2.178.el6.x86_64:

used    free    buffers/cached             
183     7279          0/7             <---before start qemu
746     6716          0/9             <---start qemu
761     6701          0/9             <---after hotplug/unplug 300 times
183     7278          0/7             <---after exit qemu

verified on qemu-kvm-0.12.1.2-2.184.el6.x86_64:

used    free    buffers/cached             
182     7279          0/6             <---before start qemu
753     6709          0/9             <---start qemu
758     6704          0/9             <---after hotplug/unplug 300 times
183     7279          0/6             <---after exit qemu

Conclusion:
---------------
After hotplug/unplug 300 times, but not exit yet, on qemu-kvm 178, system free memory reduces 15M, on 184, reduces only 5M, based on results above, the patch works well, verified.

Comment 9 errata-xmlrpc 2011-12-06 15:54:53 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2011-1531.html