Bug 1306556
Summary: | [RFE] Allow specifying cpu pinning for inactive vcpus | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Peter Krempa <pkrempa> | |
Component: | libvirt | Assignee: | Peter Krempa <pkrempa> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | unspecified | Docs Contact: | Jiri Herrmann <jherrman> | |
Priority: | unspecified | |||
Version: | 7.2 | CC: | dyuan, jherrman, jsuchane, lhuang, peterx, rbalakri, sherold | |
Target Milestone: | rc | Keywords: | FutureFeature | |
Target Release: | --- | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | libvirt-1.3.3-1.el7 | Doc Type: | Release Note | |
Doc Text: |
Kindly developers, please add some info here, mainly:
What is the new feature:
How it helps the user:
|
Story Points: | --- | |
Clone Of: | ||||
: | 1328072 (view as bug list) | Environment: | ||
Last Closed: | 2016-11-03 18:37:51 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: | 1175463, 1193173, 1305606, 1313485, 1328072 |
Description
Peter Krempa
2016-02-11 09:43:36 UTC
This feature was added upstream by: commit 02ae21deb3b5d91a6bd91d773265b6622a102985 Author: Peter Krempa <pkrempa> Date: Fri Feb 12 14:57:45 2016 +0100 qemu: add support for offline vcpupin Allow pinning for inactive vcpus. The pinning mask will be automatically applied as we would apply the default mask in case of a cpu hotplug. Setting the scheduler settings for a vcpu has the same semantics. .. and a lot of refactors necessary for that change. v1.3.2-96-g02ae21d This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions Verify this bug with libvirt-2.0.0-5.el7.x86_64: 1. prepare a inactive guest: # virsh dumpxml r7 ... <vcpu placement='static' current='1'>10</vcpu> ... 2. check vcpupin: # virsh vcpupin r7 --config VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 0-23 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 0-23 9: 0-23 3. bind vcpu to cpu # virsh vcpupin r7 2 1-3 --config # virsh vcpupin r7 9 23 --config 4. check inactive xml: # virsh dumpxml r7 ... <vcpu placement='static' current='1'>10</vcpu> <cputune> <vcpupin vcpu='2' cpuset='1-3'/> <vcpupin vcpu='9' cpuset='23'/> </cputune> ... # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 0-23 9: 23 5. start guest and recheck guest xml and vcpupin: # virsh start r7 Domain r7 started # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 0-23 9: 23 # virsh dumpxml r7 ... <vcpu placement='static' current='1'>10</vcpu> <cputune> <vcpupin vcpu='2' cpuset='1-3'/> <vcpupin vcpu='9' cpuset='23'/> </cputune> ... 6. hotplug vcpu 2: # virsh setvcpus r7 3 7. check vcpupin,taskset and cgroup: # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 0-23 9: 23 # cat /proc/`pidof qemu-kvm`/task/*/status Name: CPU 2/KVM ... Cpus_allowed: 00000e Cpus_allowed_list: 1-3 ... # cgget -g cpuset /machine.slice/machine-qemu\\x2d2\\x2dr7.scope/vcpu2 /machine.slice/machine-qemu\x2d2\x2dr7.scope/vcpu2: cpuset.memory_spread_slab: 0 cpuset.memory_spread_page: 0 cpuset.memory_pressure: 0 cpuset.memory_migrate: 1 cpuset.sched_relax_domain_level: -1 cpuset.sched_load_balance: 1 cpuset.mem_hardwall: 0 cpuset.mem_exclusive: 0 cpuset.cpu_exclusive: 0 cpuset.mems: 0-3 cpuset.cpus: 1-3 8. change vcpu 8 vcpupin on live: # virsh vcpupin r7 8 1 # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 1 9: 23 9. hot-plug vpu 8: # virsh setvcpus r7 9 # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 1 9: 23 10. check taskset and cgroup: # taskset -c -p 23596 pid 23596's current affinity list: 1 # cgget -g cpuset /machine.slice/machine-qemu\\x2d2\\x2dr7.scope/vcpu8 /machine.slice/machine-qemu\x2d2\x2dr7.scope/vcpu8: cpuset.memory_spread_slab: 0 cpuset.memory_spread_page: 0 cpuset.memory_pressure: 0 cpuset.memory_migrate: 1 cpuset.sched_relax_domain_level: -1 cpuset.sched_load_balance: 1 cpuset.mem_hardwall: 0 cpuset.mem_exclusive: 0 cpuset.cpu_exclusive: 0 cpuset.mems: 0-3 cpuset.cpus: 1 11. restart libvirtd and recheck: # service libvirtd restart Redirecting to /bin/systemctl restart libvirtd.service # virsh vcpupin r7 VCPU: CPU Affinity ---------------------------------- 0: 0-23 1: 0-23 2: 1-3 3: 0-23 4: 0-23 5: 0-23 6: 0-23 7: 0-23 8: 1 9: 23 # virsh dumpxml r7 ... <vcpu placement='static' current='9'>10</vcpu> <cputune> <vcpupin vcpu='2' cpuset='1-3'/> <vcpupin vcpu='8' cpuset='1'/> <vcpupin vcpu='9' cpuset='23'/> </cputune> ... 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/RHSA-2016-2577.html |