Bug 1092363
Summary: | [RHEL7] Virsh cmd maxvcpus returns 255 for kvm type, but the maximum number of vcpus supported by kvm is 160. | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Yang Yang <yanyang> | |
Component: | libvirt | Assignee: | Ján Tomko <jtomko> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | low | Docs Contact: | ||
Priority: | low | |||
Version: | 7.0 | CC: | dyuan, hannsj_uhl, honzhang, jiahu, mzhan, rbalakri, rbian, xuzhang | |
Target Milestone: | rc | |||
Target Release: | --- | |||
Hardware: | x86_64 | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | libvirt-1.2.8-3.el7 | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1127675 (view as bug list) | Environment: | ||
Last Closed: | 2015-03-05 07:34:57 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: |
Description
Yang Yang
2014-04-29 07:29:50 UTC
virsh capabilities also can hit this issue. [root@localhost ~]# virsh capabilities <capabilities> <host> <uuid>00c1fcdb-9fd8-e111-852c-24be051881ce</uuid> ...(clipped) <guest> <os_type>hvm</os_type> <arch name='i686'> <wordsize>32</wordsize> <emulator>/usr/libexec/qemu-kvm</emulator> <machine canonical='pc-i440fx-rhel7.0.0' maxCpus='255'>pc</machine> <machine canonical='pc-q35-rhel7.0.0' maxCpus='255'>q35</machine> <machine maxCpus='255'>rhel6.0.0</machine> <machine maxCpus='255'>rhel6.1.0</machine> <machine maxCpus='255'>rhel6.2.0</machine> <machine maxCpus='255'>rhel6.3.0</machine> <machine maxCpus='255'>rhel6.4.0</machine> <machine maxCpus='255'>rhel6.5.0</machine> <machine maxCpus='1'>none</machine> <domain type='qemu'> </domain> <domain type='kvm'> <emulator>/usr/libexec/qemu-kvm</emulator> </domain> </arch> <features> <cpuselection/> <deviceboot/> <acpi default='on' toggle='yes'/> <apic default='on' toggle='no'/> <pae/> <nonpae/> </features> </guest> <guest> <os_type>hvm</os_type> <arch name='x86_64'> <wordsize>64</wordsize> <emulator>/usr/libexec/qemu-kvm</emulator> <machine canonical='pc-i440fx-rhel7.0.0' maxCpus='255'>pc</machine> <machine canonical='pc-q35-rhel7.0.0' maxCpus='255'>q35</machine> <machine maxCpus='255'>rhel6.0.0</machine> <machine maxCpus='255'>rhel6.1.0</machine> <machine maxCpus='255'>rhel6.2.0</machine> <machine maxCpus='255'>rhel6.3.0</machine> <machine maxCpus='255'>rhel6.4.0</machine> <machine maxCpus='255'>rhel6.5.0</machine> <machine maxCpus='1'>none</machine> <domain type='qemu'> </domain> <domain type='kvm'> <emulator>/usr/libexec/qemu-kvm</emulator> </domain> </arch> <features> <cpuselection/> <deviceboot/> <acpi default='on' toggle='yes'/> <apic default='on' toggle='no'/> </features> </guest> </capabilities> For 'virsh maxvcpus', libvirt gets the maximum from the kernel: #ifdef KVM_CAP_MAX_VCPUS /* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */ if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0) goto cleanup; #endif /* KVM_CAP_MAX_VCPUS */ /* as a fallback get KVM_CAP_NR_VCPUS (the recommended maximum number of * vcpus). Note that on most machines this is set to 160. */ if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_NR_VCPUS)) > 0) goto cleanup; Upstream QEMU only reports a warning when the VCPU number exceeds the recommended number (CAP_NR_VCPUS), but QEMU in RHEL-7.0 treats the recommended number as a maximum. A RHEL-only patch for libvirt reporting only the NR_VCPUS value will be needed. The maxCpus values in 'virsh capabilites' come directly from QEMU's 'query-machines' command. Downstream-only patch posted: http://post-office.corp.redhat.com/archives/rhvirt-patches/2014-September/msg00757.html Verify it as follows. Move its status to VERIFIED. [root@localhost ~]# uname -r 3.10.0-170.el7.x86_64 [root@localhost ~]# rpm -q libvirt qemu-kvm libvirt-1.2.8-3.el7.x86_64 qemu-kvm-1.5.3-73.el7.x86_64 [root@localhost ~]# virsh capabilities <capabilities> <host> <uuid>00edea21-665c-e211-aa0c-10604b5cb9e7</uuid> <cpu> <arch>x86_64</arch> <model>SandyBridge</model> <vendor>Intel</vendor> <topology sockets='1' cores='4' threads='2'/> <feature name='invtsc'/> <feature name='erms'/> <feature name='smep'/> <feature name='fsgsbase'/> <feature name='rdrand'/> <feature name='f16c'/> <feature name='osxsave'/> <feature name='pcid'/> <feature name='pdcm'/> <feature name='xtpr'/> <feature name='tm2'/> <feature name='est'/> <feature name='smx'/> <feature name='vmx'/> <feature name='ds_cpl'/> <feature name='monitor'/> <feature name='dtes64'/> <feature name='pbe'/> <feature name='tm'/> <feature name='ht'/> <feature name='ss'/> <feature name='acpi'/> <feature name='ds'/> <feature name='vme'/> <pages unit='KiB' size='4'/> <pages unit='KiB' size='2048'/> </cpu> <power_management> <suspend_mem/> <suspend_disk/> <suspend_hybrid/> </power_management> <migration_features> <live/> <uri_transports> <uri_transport>tcp</uri_transport> </uri_transports> </migration_features> <topology> <cells num='1'> <cell id='0'> <memory unit='KiB'>8330192</memory> <pages unit='KiB' size='4'>2082548</pages> <pages unit='KiB' size='2048'>0</pages> <distances> <sibling id='0' value='10'/> </distances> <cpus num='8'> <cpu id='0' socket_id='0' core_id='0' siblings='0,4'/> <cpu id='1' socket_id='0' core_id='1' siblings='1,5'/> <cpu id='2' socket_id='0' core_id='2' siblings='2,6'/> <cpu id='3' socket_id='0' core_id='3' siblings='3,7'/> <cpu id='4' socket_id='0' core_id='0' siblings='0,4'/> <cpu id='5' socket_id='0' core_id='1' siblings='1,5'/> <cpu id='6' socket_id='0' core_id='2' siblings='2,6'/> <cpu id='7' socket_id='0' core_id='3' siblings='3,7'/> </cpus> </cell> </cells> </topology> <secmodel> <model>selinux</model> <doi>0</doi> <baselabel type='kvm'>system_u:system_r:svirt_t:s0</baselabel> <baselabel type='qemu'>system_u:system_r:svirt_tcg_t:s0</baselabel> </secmodel> <secmodel> <model>dac</model> <doi>0</doi> <baselabel type='kvm'>+0:+0</baselabel> <baselabel type='qemu'>+0:+0</baselabel> </secmodel> </host> <guest> <os_type>hvm</os_type> <arch name='i686'> <wordsize>32</wordsize> <emulator>/usr/libexec/qemu-kvm</emulator> <machine canonical='pc-i440fx-rhel7.0.0' maxCpus='240'>pc</machine> <machine canonical='pc-q35-rhel7.0.0' maxCpus='240'>q35</machine> <machine maxCpus='240'>rhel6.0.0</machine> <machine maxCpus='240'>rhel6.1.0</machine> <machine maxCpus='240'>rhel6.2.0</machine> <machine maxCpus='240'>rhel6.3.0</machine> <machine maxCpus='240'>rhel6.4.0</machine> <machine maxCpus='240'>rhel6.5.0</machine> <domain type='qemu'> </domain> <domain type='kvm'> <emulator>/usr/libexec/qemu-kvm</emulator> </domain> </arch> <features> <cpuselection/> <deviceboot/> <disksnapshot default='off' toggle='no'/> <acpi default='on' toggle='yes'/> <apic default='on' toggle='no'/> <pae/> <nonpae/> </features> </guest> <guest> <os_type>hvm</os_type> <arch name='x86_64'> <wordsize>64</wordsize> <emulator>/usr/libexec/qemu-kvm</emulator> <machine canonical='pc-i440fx-rhel7.0.0' maxCpus='240'>pc</machine> <machine canonical='pc-q35-rhel7.0.0' maxCpus='240'>q35</machine> <machine maxCpus='240'>rhel6.0.0</machine> <machine maxCpus='240'>rhel6.1.0</machine> <machine maxCpus='240'>rhel6.2.0</machine> <machine maxCpus='240'>rhel6.3.0</machine> <machine maxCpus='240'>rhel6.4.0</machine> <machine maxCpus='240'>rhel6.5.0</machine> <domain type='qemu'> </domain> <domain type='kvm'> <emulator>/usr/libexec/qemu-kvm</emulator> </domain> </arch> <features> <cpuselection/> <deviceboot/> <disksnapshot default='off' toggle='no'/> <acpi default='on' toggle='yes'/> <apic default='on' toggle='no'/> </features> </guest> </capabilities> [root@localhost ~]# virsh maxvcpus kvm 240 [root@localhost ~]# virsh list --all Id Name State ---------------------------------------------------- - r shut off [root@localhost ~]# virsh edit r Domain r XML configuration edited. [root@localhost ~]# virsh dumpxml r|grep vcpu <vcpu placement='static'>240</vcpu> [root@localhost ~]# virsh start r Domain r started [root@localhost ~]# virsh destroy r Domain r destroyed [root@localhost ~]# virsh edit r Domain r XML configuration edited. [root@localhost ~]# virsh dumpxml r|grep vcpu <vcpu placement='static'>241</vcpu> [root@localhost ~]# virsh start r error: Failed to start domain r error: unsupported configuration: Maximum CPUs greater than specified machine type limit 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-2015-0323.html |