Red Hat Bugzilla – Bug 1001143
Drop memory limit heuristic
Last modified: 2014-06-17 20:54:16 EDT
Description of problem:
Libvirt supports setting a hard limit on a domain. If this limit is reached, the corresponding qemu process is killed as if OOM would happen. However, with recent libvirt, if the limit is not set, the libvirtd tries to guess the limit. This has caused several problems in the past as we could never get the heuristic right. Hence, the code should be removed until the time somebody comes with bright idea.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. create a domain without <hard_limit/>.
2. run it for a while
3. observe OOM (e.g. something like this https://bugzilla.redhat.com/attachment.cgi?id=780599)
Domain gets killed
Domain doesn't get killed
I built qemu-kvm with inserting a memory leak(add malloc in kvm_cpu_exec() without free). And in libvirt-1.1.1-2.el7, this qemu-kvm process killed by OOM immediately. But in libvirt-1.1.1-3.el7, it is not killed even used 70%+ of whole computer memory:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26608 qemu 20 0 0.700t 5.544g 7204 S 1.662 72.19 1:09.08 qemu-kvm
# free -h
total used free shared buffers cached
Mem: 7.7G 7.5G 217M 0B 0B 848M
-/+ buffers/cache: 6.6G 1.0G
Swap: 0B 0B 0B
That means heuristic memory limit is removed in libvirt-1.1.1-3.el7, the fix is working. So I change the status to VERIFIED.
Thanks for Michal Privoznik's advice.
This request was resolved in Red Hat Enterprise Linux 7.0.
Contact your manager or support representative in case you have further questions about the request.