Bug 1080319
| Summary: | [balloon]win8.1-32 could use 3G memory in one guest but stat-total-memory only shows 2G | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Min Deng <mdeng> |
| Component: | virtio-win | Assignee: | Vadim Rozenfeld <vrozenfe> |
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.0 | CC: | bcao, ghammer, hhuang, huding, juzhang, rbalakri, virt-maint, vrozenfe |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: |
Cause:
Memory balloon service can report incorrect amount of total memory.
Consequence:
Memory balloon service can report incorrect amount of total memory on a system with more than 2GB.
Fix:
Replace GlobalMemoryStatus with GlobalMemoryStatusEx to report memory statistics correctly.
Result:
Now total memory information can be reported correctly.
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-03-05 05:34:03 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1131838 | ||
Reproduce this issue using the following version:
kernel-3.10.0-138.el7.x86_64
qemu-kvm-rhev-1.5.3-66.el7.x86_64
virtio-win-prewhql-0.1-75
Steps to Reproduce:
1.boot up guest with the cli
/usr/libexec/qemu-kvm -M pc -m 3G -smp 2 -cpu Nehalem,+x2apic,hv_spinlocks=0x1fff,hv_relaxed,hv_vapic,hv_time -drive file=win8.1-32.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none -device ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=00:43:31:48:14:27,id=net0 -uuid 1cedf92f-cdd9-4b01-8487-35fb58dcc82e -rtc-td-hack -no-kvm-pit-reinjection -chardev socket,id=a,path=/tmp/monitor-win2k8R2-serial,server,nowait -mon chardev=a,mode=readline -name win8132 -device virtio-balloon-pci,id=balloon0 -vnc :2 -vga cirrus -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -monitor stdio -qmp tcp:0:4444,server,nowait
2.from qmp
{"execute":"qmp_capabilities"}
{"execute": "qom-set","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats-polling-interval", "value": 2 } } *enable polling
{ "execute": "qom-get","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats" } }
{"return": {"stats": {"stat-swap-out": 0, "stat-free-memory": 2147483647, "stat-minor-faults": 5926, "stat-major-faults": 96, "stat-total-memory": 2147483647, "stat-swap-in": 1131}, "last-update": 1406779516}}
Result:
after step2, "stat-total-memory" is 2147483647, about 2G.
Test this issue using the following version:
kernel-3.10.0-138.el7.x86_64
qemu-kvm-rhev-1.5.3-66.el7.x86_64
virtio-win-prewhql-0.1-88
Steps to Reproduce:
1.boot up guest with the cli
/usr/libexec/qemu-kvm -M pc -m 3G -smp 2 -cpu Nehalem,+x2apic,hv_spinlocks=0x1fff,hv_relaxed,hv_vapic,hv_time -drive file=win8.1-32.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none -device ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=00:43:31:48:14:27,id=net0 -uuid 1cedf92f-cdd9-4b01-8487-35fb58dcc82e -rtc-td-hack -no-kvm-pit-reinjection -chardev socket,id=a,path=/tmp/monitor-win2k8R2-serial,server,nowait -mon chardev=a,mode=readline -name win8132 -device virtio-balloon-pci,id=balloon0 -vnc :2 -vga cirrus -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -monitor stdio -qmp tcp:0:4444,server,nowait
2.from qmp
{"execute":"qmp_capabilities"}
{"execute": "qom-set","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats-polling-interval", "value": 2 } } *enable polling
{ "execute": "qom-get","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats" } }
{"return": {"stats": {"stat-swap-out": 0, "stat-free-memory": 2683273216, "stat-minor-faults": 0, "stat-major-faults": 0, "stat-total-memory": 3220811776, "stat-swap-in": 0}, "last-update": 1406780136}}
Result:
after step2, "stat-total-memory" is 3220811776, about 3G.
Use the steps of comment 4 on a intel host to test the following version: kernel-3.10.0-138.el7.x86_64 qemu-kvm-rhev-1.5.3-66.el7.x86_64 virtio-win-prewhql-0.1-88(In reply to huiqingding from comment #4) > Test this issue using the following version: > kernel-3.10.0-138.el7.x86_64 > qemu-kvm-rhev-1.5.3-66.el7.x86_64 Correction: qemu-kvm-1.5.3-66.el7.x86_64 > virtio-win-prewhql-0.1-88 > > Steps to Reproduce: > 1.boot up guest with the cli > /usr/libexec/qemu-kvm -M pc -m 3G -smp 2 -cpu > Nehalem,+x2apic,hv_spinlocks=0x1fff,hv_relaxed,hv_vapic,hv_time -drive > file=win8.1-32.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop, > rerror=stop,cache=none -device > ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev > tap,id=hostnet0,script=/etc/qemu-ifup -device > e1000,netdev=hostnet0,mac=00:43:31:48:14:27,id=net0 -uuid > 1cedf92f-cdd9-4b01-8487-35fb58dcc82e -rtc-td-hack -no-kvm-pit-reinjection > -chardev socket,id=a,path=/tmp/monitor-win2k8R2-serial,server,nowait -mon > chardev=a,mode=readline -name win8132 -device virtio-balloon-pci,id=balloon0 > -vnc :2 -vga cirrus -global PIIX4_PM.disable_s3=1 -global > PIIX4_PM.disable_s4=1 -monitor stdio -qmp tcp:0:4444,server,nowait > 2.from qmp > {"execute":"qmp_capabilities"} > {"execute": "qom-set","arguments": { "path": > "/machine/peripheral/balloon0","property": "guest-stats-polling-interval", > "value": 2 } } *enable polling > { "execute": "qom-get","arguments": { "path": > "/machine/peripheral/balloon0","property": "guest-stats" } } > {"return": {"stats": {"stat-swap-out": 0, "stat-free-memory": 2683273216, > "stat-minor-faults": 0, "stat-major-faults": 0, "stat-total-memory": > 3220811776, "stat-swap-in": 0}, "last-update": 1406780136}} > > Result: > after step2, "stat-total-memory" is 3220811776, about 3G. Use the steps of comment 4 to test the following version on an intel host: kernel-3.10.0-138.el7.x86_64 qemu-kvm-rhev-2.1.0-3.el7ev.preview virtio-win-prewhql-0.1-88 The result is as following: {"execute":"qmp_capabilities"} {"return": {}} {"execute": "qom-set","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats-polling-interval", "value": 2 } } {"return": {}} { "execute": "qom-get","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats" } } {"return": {"stats": {"stat-swap-out": 0, "stat-free-memory": 2342133760, "stat-minor-faults": 0, "stat-major-faults": 0, "stat-total-memory": 3220811776, "stat-swap-in": 0}, "last-update": 1406780340}} "stat-total-memory" is 3220811776, about 3G. Hi, Vadim, According to comment 3 and comment 4, I only update virtio-win-prewhql-0.1-75 to virtio-win-prewhql-0.1-88, qemu-kvm is always qemu-kvm-1.5.3-66, found "stat-total-memory" is fixed. Whether the component of this bug is "virtio-win" and not "qemu-kvm"? Best regards Huiqing (In reply to huiqingding from comment #8) > Hi, Vadim, > > According to comment 3 and comment 4, I only update > virtio-win-prewhql-0.1-75 to virtio-win-prewhql-0.1-88, qemu-kvm is always > qemu-kvm-1.5.3-66, found "stat-total-memory" is fixed. > > Whether the component of this bug is "virtio-win" and not "qemu-kvm"? > > Best regards > Huiqing Hi Huiqing, the fix itself was in the balloon service, which is the part of virtio-win. So, you are absolutly right, the bug should be moved under virtio-win category. Best regards, Vadim. Move status to Verified according to comment 3&4 Mike 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. https://rhn.redhat.com/errata/RHBA-2015-0289.html |
Description of problem: win8.1-32 could use 3G memory in one guest but stat-total-memory only shows 2G Version-Release number of selected component (if applicable): kernel-3.10.0-113.el7.x86_64 qemu-kvm-rhev-1.5.3-53.el7.x86_64 virtio-win-prewhql-0.1-75 How reproducible: 3/3 Steps to Reproduce: 1.boot up guest with the cli /usr/libexec/qemu-kvm -M pc -m 3G -smp 2 -cpu Nehalem,+x2apic,hv_spinlocks=0x1fff,hv_relaxed,hv_vapic,hv_time -drive file=win8.1-32.raw,format=raw,if=none,id=drive-ide0-0-0,werror=stop,rerror=stop,cache=none -device ide-drive,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,id=hostnet0,script=/etc/qemu-ifup -device e1000,netdev=hostnet0,mac=00:43:31:48:14:27,id=net0 -uuid 1cedf92f-cdd9-4b01-8487-35fb58dcc82e -rtc-td-hack -no-kvm-pit-reinjection -chardev socket,id=a,path=/tmp/monitor-win2k8R2-serial,server,nowait -mon chardev=a,mode=readline -name win8132 -device virtio-balloon-pci,id=balloon0 -vnc :2 -vga cirrus -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -monitor stdio -qmp tcp:0:4444,server,nowait 2.from qmp {"execute":"qmp_capabilities"} {"execute": "qom-set","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats-polling-interval", "value": 2 } } *enable polling { "execute": "qom-get","arguments": { "path": "/machine/peripheral/balloon0","property": "guest-stats" } } {"return": {"stats": {"stat-swap-out": 0, "stat-free-memory": 2147483647, "stat-minor-faults": 30, "stat-major-faults": 0, "stat-total-memory": 2147483647, "stat-swap-in": 0}, "last-update": 1395732365}} Actual results: "stat-total-memory" was approximately 2G but win8.1-32 guest could consume 3G memory.If I was wrong please correct me. Expected results: It should show correctly,and more detail explanation of those values are welcomed. Additional info: