Skip navigation
2013

ESXi で起動中の VM がどれくらい CPU オーバーコミットか「見える化」してみようと思い

簡単な PowerCLI スクリプトを作成してみました。

 

get_esxi_cpuoc.ps1

Get-VMHost | % {

    $hv = $_

    $hv_pcpu = $hv.NumCpu

    $hv_vcpus = 0

    $hv | Get-VM | where {$_.PowerState -eq "PoweredOn"} | % {

        $vm = $_

        $hv_vcpus += $vm.NumCpu

    }

    "$hv では、 $hv_pcpu 物理コアに $hv_vcpus vCPUあります。"

    "CPU物理コアのオーバーコミット: " + ($hv_vcpus / $hv_pcpu * 100) + "%"

    "vCPU: " + ("■" * $hv_vcpus)

    "pCPU: " + ("□" * $hv_pcpu)

} | ft -AutoSize

PowerCLI で接続中の vCenter(または ESXi) から、すべての ESXi について情報取得します。

起動中 VM(PowerState = PoweredOn のもの)に設定されている、

すべての vCPU 数を足して、物理 CPU コア数と並べて表示しています。

 

実行例

2台の ESXi に接続して実行してみたイメージです。

ESXi (例だと、esxi243 と esxi244)は、それぞれ HW スペックが異なります。

 

vCPU と、pCPU(物理 CPU コア)のゲージ的なものが並べて表示されます。
一コマが 1CPU(vCPU または pCPU)です。

 

基本的には、vCPU ごとに pCPU がずっと固定されているわけではありません。

特に CPU アフィニティを設定していない場合は、

上段に表示された vCPU が、空いている下段の pCPU のどれかに割り当てられる感じです。

PowerCLI> Connect-VIServer esxi243,esxi244

PowerCLI> .\get_esxi_cpuoc.ps1
esxi244 では、 4 物理コアに 40 vCPUあります。
CPU物理コアのオーバーコミット: 1000%
vCPU: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pCPU: □□□□
esxi243 では、 2 物理コアに 12 vCPUあります。
CPU物理コアのオーバーコミット: 600%
vCPU: ■■■■■■■■■■■■
pCPU: □□

※接続するときの画面表示は省略しています。


ちなみに、ESXi 上の VM 全体で物理 CPU コア数よりも多く vCPU 割り当てした状態でも、

すぐにCPUリソースに余裕がなくなるというわけではありません。

上記の例でもオーバーコミットは1000%と600%ですが、

実際の CPU リソースにはまだ余裕があります。CpuTotalMhz のうち、CpuUsageMhz の分しか使用していません。

PowerCLI> Get-VMHost | select Name,NumCpu,CpuUsageMhz,CpuTotalMhz | ft -AutoSize

Name    NumCpu CpuUsageMhz CpuTotalMhz
----    ------ ----------- -----------
esxi244      4       10902       13568
esxi243      2        1087        2594


以上です。

CPU オーバーコミット具合を見てみる話でした。

ありがたい資料が公開されました。

Network port diagram for vSphere 5.x (2054806)
http://kb.vmware.com/kb/2054806


上記のKBから、
Network Port Diagram - vSphere 5.x - Reference Sheet
(NetworkPortDiagram-vSphere5x-ReferenceTable-v2.pdf)
というPDFがダウンロードできます。

 

この資料のおすすめなところ

  • vCenter 5.1~のコンポーネントについても書いてある。
    (Web Clientサーバ、vCenter Single Sign On、Inventory Services)
  • VMware系以外のサーバも書いてある。
    (DNSやSNMP、CIMサーバ、LDAP…)

 

 

いままでは、下記のKBを見ながら確認していたのですが、
VMwareがどのTCP/UDPポートを使用しているのか、通信要件確認は結構大変でした。

TCP and UDP Ports required to access vCenter Server, ESXi/ESX hosts, and other network components (1012382)
http://kb.vmware.com/kb/1012382


以上、印刷して壁にはっておきたいと思います。

 

あ、

vCenter SSO → Database(SQL-1433/TCP or Oracle-1521/TCP) とかもありそうな気が・・・