Comment 9 for bug 571093

Revision history for this message
Nick Outin (outin) wrote : Re: libvirtd eats away more memory over time

I spent some more time on this, and it appears my leak is related to multipath. Shutting down multipath (multipath -F; service multipath-tools stop) stops the leak. Alvin also appears to have multipath running, it's listed in the dmesg he uploaded.

The udev messages I'm seeing in the libvirtd log are mirrored when running "udevadm monitor". I found that removing "|change" from the ACTION line in /lib/udev/rules.d/95-multipath.rules appears to fix the leak, or at least slows it down considerably. I ran my two servers overnight, and this morning libvirtd on the changed server is using 53MB of RES memory as reported by top, and the unchanged server is using 2.5GB. Both had similar workloads.

Here's the exact line:

/lib/udev/rules.d/95-multipath.rules
from:
ACTION=="add|change", SUBSYSTEM=="block", RUN+="/sbin/multipath -v0 /dev/%k"
to:
ACTION=="add", SUBSYSTEM=="block", RUN+="/sbin/multipath -v0 /dev/%k"

I found it was added in debian bug #489850, and it looks harmless enough to change, at least in my instance.

Also, an overnight run with multipath turned off resulted in only 5MB of RES memory usage by libvirtd.