Bug 1447612
| Summary: | Enhance libvirt to present virtual L3 cache info for vcpus | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Jaroslav Reznik <jreznik> |
| Component: | libvirt | Assignee: | Jiri Denemark <jdenemar> |
| Status: | CLOSED ERRATA | QA Contact: | Luyao Huang <lhuang> |
| Severity: | urgent | Docs Contact: | |
| Priority: | high | ||
| Version: | 7.4 | CC: | berrange, chayang, coli, dyuan, hhuang, jdenemar, jmelvin, juzhang, kchamart, knoel, michen, mtessun, pbonzini, rbalakri, rkrcmar, salmy, snagar, virt-bugs, virt-maint, xuzhang, yalzhang |
| Target Milestone: | rc | Keywords: | FutureFeature, Upstream, ZStream |
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | libvirt-2.0.0-10.el7_3.9 | Doc Type: | Enhancement |
| Doc Text: |
Feature: Level-3 CPU cache can be enabled for virtual CPUs using <cache level'3' mode='emulate'/> sub-element of the <cpu> element in domain XML.
Reason: Reporting an L3 cache in a guest can increase performance in some workloads.
Result: Performance in some workloads can significantly increase after an L3 CPU cache is enabled.
|
Story Points: | --- |
| Clone Of: | 1428952 | Environment: | |
| Last Closed: | 2017-05-25 15:37:08 UTC | Type: | --- |
| 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: | 1428952 | ||
| Bug Blocks: | |||
|
Description
Jaroslav Reznik
2017-05-03 10:24:21 UTC
Verify this bug with libvirt-2.0.0-10.el7_3.9.x86_64, qemu-kvm-rhev-2.6.0-28.el7_3.9.x86_64:
S1: l3 + host-model
1. prepare a guest which enable l3 cache:
<cpu mode='host-model'>
<model fallback='allow'/>
<cache level='3' mode='emulate'/>
</cpu>
2. start guest and recheck guest xml and qemu cmdline:
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -a2 'cache'
<cpu mode='host-model'>
<model fallback='allow'/>
<cache level='3' mode='emulate'/>
</cpu>
<clock offset='utc'>
# ps aux|grep qemu
qemu 6106 49.2 1.1 2164540 372040 ? Sl 06:06 0:26 ..... -cpu Opteron_G5,+vme,+ht,+monitor,+osxsave,+bmi1,+mmxext,+fxsr_opt,+cmp_legacy,+extapic,+cr8legacy,+osvw,+ibs,+skinit,+wdt,+lwp,+tce,+nodeid_msr,+topoext,+perfctr_core,+perfctr_nb,l3-cache=on
3. restart libvirtd and recheck guest:
# service libvirtd restart
Redirecting to /bin/systemctl restart libvirtd.service
# virsh dumpxml r7 |grep -a2 'cache'
<cpu mode='host-model'>
<model fallback='allow'/>
<cache level='3' mode='emulate'/>
</cpu>
<clock offset='utc'>
4. login guest and check the cache info:
IN GUEST:
# lscpu |grep cache
L1d cache: 64K
L1i cache: 64K
L2 cache: 512K
L3 cache: 16384K
S2: disable + host-model
1. modify the guest xml like this:
<cpu mode='host-model'>
<model fallback='allow'/>
<cache mode='disable'/>
</cpu>
2. start guest and check xml and qemu cmdline:
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -a2 'cache'
<cpu mode='host-model'>
<model fallback='allow'/>
<cache mode='disable'/>
</cpu>
<clock offset='utc'>
# ps aux|grep qemu
qemu 6437 13.4 1.1 2148144 373056 ? Sl 06:13 0:27 ...... -cpu Opteron_G5,+vme,+ht,+monitor,+osxsave,+bmi1,+mmxext,+fxsr_opt,+cmp_legacy,+extapic,+cr8legacy,+osvw,+ibs,+skinit,+wdt,+lwp,+tce,+nodeid_msr,+topoext,+perfctr_core,+perfctr_nb
S3: host-passthrough + l3
1. modify the guest xml like this:
# virsh dumpxml r7 |grep -a1 'cache'
<cpu mode='host-passthrough'>
<cache level='3' mode='emulate'/>
</cpu>
2. start guest and check xml and qemu cmdline:
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -a1 'cache'
<cpu mode='host-passthrough'>
<cache level='3' mode='emulate'/>
</cpu>
# ps aux|grep qemu
qemu 6659 104 0.1 2112292 50536 ? Sl 06:19 0:05 ..... -cpu host,l3-cache=on
3. restart libvirtd and recheck guest:
# virsh dumpxml r7 |grep -a1 'cache'
<cpu mode='host-passthrough'>
<cache level='3' mode='emulate'/>
</cpu>
4. login guest and check the cache info:
IN GUEST:
# lscpu |grep cache
L1d cache: 64K
L1i cache: 64K
L2 cache: 512K
L3 cache: 16384K
S4: host-passthrough + passthrough
1. modify the guest xml like this:
<cpu mode='host-passthrough'>
<cache mode='passthrough'/>
</cpu>
2. start guest and recheck guest xml & qemu cmdline:
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -a1 'cache'
<cpu mode='host-passthrough'>
<cache mode='passthrough'/>
</cpu>
# ps aux|grep qemu
qemu 6968 15.4 1.1 2147116 379864 ? Sl 06:25 0:26 ...... -cpu host,host-cache-info=on
3. restart libvirtd and recheck guest:
# service libvirtd restart
Redirecting to /bin/systemctl restart libvirtd.service
# virsh dumpxml r7 |grep -a1 'cache'
<cpu mode='host-passthrough'>
<cache mode='passthrough'/>
</cpu>
4. login guest and check the cache info:
IN GUEST:
# lscpu |grep cache
L1d cache: 16K
L1i cache: 64K
L2 cache: 2048K
L3 cache: 12288K
S5: default cpu mode + l3
1. modify guest xml like this:
# virsh dumpxml r7 |grep -a1 'cache'
<cpu>
<cache level='3' mode='emulate'/>
</cpu>
2. start guest and recheck guest xml and qemu cmdline:
# virsh start r7
Domain r7 started
# virsh dumpxml r7 |grep -a1 'cache'
<cpu>
<cache level='3' mode='emulate'/>
</cpu>
# ps aux|grep qemu
qemu 7285 107 0.1 2114336 49244 ? Sl 06:37 0:04 ...... -cpu qemu64,l3-cache=on
3. restart libvirtd and recheck:
# virsh dumpxml r7 |grep -a1 'cache'
<cpu>
<cache level='3' mode='emulate'/>
</cpu>
4. login guest:
# lscpu |grep cache
L1d cache: 64K
L1i cache: 64K
L2 cache: 512K
L3 cache: 16384K
S6: some invalid config
1. passthrough + host-model
# virsh edit r7
error: unsupported configuration: CPU cache mode 'passthrough' can only be used with 'host-passthrough' CPUs
Failed. Try again? [y,n,i,f,?]:
2. cache level 2
# virsh edit r7
error: unsupported configuration: CPU cache mode 'emulate' can only be used with level='3'
Failed. Try again? [y,n,i,f,?]:
3. cache level 3 + disable
# virsh edit r7
error: unsupported configuration: unsupported CPU cache level for mode 'disable'
Failed. Try again? [y,n,i,f,?]:
4. old qemu + l3 cache:
# virsh start r7
error: Failed to start domain r7
error: internal error: qemu unexpectedly closed the monitor: 2017-05-08T10:52:08.249316Z qemu-kvm: unrecognized feature l3-cache
5. old qemu + passthrough cache:
# virsh start r7
error: Failed to start domain r7
error: internal error: qemu unexpectedly closed the monitor: 2017-05-08T10:53:12.563395Z qemu-kvm: unrecognized feature host-cache-info
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://access.redhat.com/errata/RHBA-2017:1304 |