Virtualization

Cloudstack VM 使用比限制更多的 CPU

  • December 22, 2016

我有一個具有以下配置的私有 cloudstack 雲:

主機伺服器:

  • Ubuntu 14.04
  • KVM 管理程序
  • 2x 2400 MHz CPU(amd athlon 64 X2 雙核處理器 4600+)

虛擬機:

  • 1x 500 MHz CPU(僅限 cloudstack 使用 500mhz)
  • Ubuntu 14.04

當我將 vm 與stress實用程序一起使用到 100% 時,主機的 cpu 顯示使用率為 50%。所以 vm 正在使用主機的一個完整的 cpu 核心。

這是cloudstack的錯誤嗎?也許是KVM?


更新

這是cloudstack生成的vm配置:

<domain type='kvm'>
 <name>i-4-118-VM</name>
 <uuid>0c795c99-5bab-46f8-a321-71e3e398036b</uuid>
 <description>Ubuntu 14.04 (64-bit)</description>
 <memory unit='KiB'>512000</memory>
 <currentMemory unit='KiB'>512000</currentMemory>
 <vcpu placement='static'>1</vcpu>
 <cputune>
   <shares>500</shares>
 </cputune>
 <resource>
   <partition>/machine</partition>
 </resource>
 <sysinfo type='smbios'>
   <system>
     <entry name='manufacturer'>Apache Software Foundation</entry>
     <entry name='product'>CloudStack KVM Hypervisor</entry>
     <entry name='uuid'>0c795c99-5bab-46f8-a321-71e3e398036b</entry>
   </system>
 </sysinfo>
 <os>
   <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
   <boot dev='cdrom'/>
   <boot dev='hd'/>
   <smbios mode='sysinfo'/>
 </os>
 <features>
   <acpi/>
   <apic/>
   <pae/>
 </features>
 <cpu>
 </cpu>
 <clock offset='utc'>
   <timer name='kvmclock'/>
 </clock>
 <on_poweroff>destroy</on_poweroff>
 <on_reboot>restart</on_reboot>
 <on_crash>destroy</on_crash>
 <devices>
   <emulator>/usr/bin/kvm-spice</emulator>
   <disk type='file' device='disk'>
     <driver name='qemu' type='qcow2' cache='none'/>
     <source file='/mnt/a5bb6304-61f7-3d9e-9706-1f447a6a5fdb/af0c4ab6-aaad-4990-9046-da6ac83a575f'/>
     <target dev='vda' bus='virtio'/>
     <serial>af0c4ab6aaad49909046</serial>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
   </disk>
   <disk type='file' device='cdrom'>
     <driver name='qemu' type='raw' cache='none'/>
     <target dev='hdc' bus='ide'/>
     <readonly/>
     <address type='drive' controller='0' bus='1' target='0' unit='0'/>
   </disk>
   <controller type='usb' index='0'>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
   </controller>
   <controller type='pci' index='0' model='pci-root'/>
   <controller type='ide' index='0'>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
   </controller>
   <interface type='bridge'>
     <mac address='06:0b:00:00:00:15'/>
     <source bridge='cloudbr0'/>
     <bandwidth>
       <inbound average='25600' peak='25600'/>
       <outbound average='25600' peak='25600'/>
     </bandwidth>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
   </interface>
   <serial type='pty'>
     <target port='0'/>
   </serial>
   <console type='pty'>
     <target type='serial' port='0'/>
   </console>
   <input type='tablet' bus='usb'/>
   <input type='mouse' bus='ps2'/>
   <input type='keyboard' bus='ps2'/>
   <graphics type='vnc' port='-1' autoport='yes' listen='10.0.0.11' passwd='-'>
     <listen type='address' address='10.0.0.11'/>
   </graphics>
   <video>
     <model type='cirrus' vram='9216' heads='1'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
   </video>
   <memballoon model='none'/>
 </devices>
 <seclabel type='none'/>
</domain>

我希望有人能提供幫助或有想法!

控制 CPU 使用率的來賓 XML 中唯一的內容是 <shares>500&;lt;/shares>。這並沒有做你可能認為它正在做的事情。“共享”只是訪客的*相對權重/優先級,與其他程序有關。*例如,如果您在主機上有 2 位來賓,其中一位的股份價值為“500”,而一位的股份價值為“100”,那麼第一個來賓將獲得與第二個來賓相同的 CPU 時間量的 5 倍。

如果您想對 CPU 使用設置絕對上限,例如說主機 CPU 的 50%,那麼您需要使用&lt;period&gt;and&lt;quota&gt;設置。例如 1000000 的周期和 500000 的配額,將限制每個 vCPU 僅使用主機 CPU 的 50%。

引用自:https://serverfault.com/questions/817792