免責事項: これは英文の記事「Initial Placement by DRS places VMs in high-load ESXi hosts」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
ESXi ホストそれぞれが異なる性能の CPU を搭載している異なるモデル混在構成のクラスタでは、DRS による初期配置時により高い CPU 周波数を持つ ESXi ホストが選択されます。
注: クラスタ内の ESXi ホスト構成としては、すべてのホストが同じ性能の CPU を搭載していることが推奨されます。
DRS による選択方法の例:
クラスタ内の 2 つの ESXi ホストがそれぞれ異なる周波数を持つ場合:
ホスト名: esxi-01.gslabs.local
バージョン: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz (0x000606a6) >>> esxi-01 は esxi-02 より新しい型番の CPU を搭載しています。
ホスト名: esxi-02.gslabs.local
バージョン: Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz (0x00050657) >>> このホストは esxi-01 の CPU 周波数 3.00 GHzと比較し、より高い CPU 周波数である 3.10GHz を搭載しています。
注: DRS の初期配置とロードバランシングの決定方法詳細を確認するには、vpxd のログレベルが verbose である必要があります。
仮想マシンのパワーオン時:
仮想マシンが登録されている ESXi ホスト esxi-01
2023-10-24T11:29:46.136+01:00 verbose vpxd[46144] [Originator@6876 sub=cdrsPlmt opID=lo45z78y-7031-auto-5fc-h5:70003089-1c-01] Goodness on [vim.HostSystem:host-348865,esxi-01.gslabs.local]: Performance: CPU 2993 MainMem 2993 MemTiering 2993 Network 2993 FTLogging 2993 FTSecondary 2993 vSAN 2993 SDRS 2993 Maintenance 2993 , Headroom: CPU 2952 MainMem 2993 MemTiering 2993 Network 2993 FTLogging 2993 FTSecondary 2993 vSAN 2993 SDRS 2993 Maintenance 2993 , Overall performance: 2993, Overall headroom: 2952, CPU demand: 2993, IsRegisteredHost: true
2023-10-24T11:29:46.136+01:00 verbose vpxd[46144] [Originator@6876 sub=cdrsPlmt opID=lo45z78y-7031-auto-5fc-h5:70003089-1c-01] Choice host-348865: Expected gain: 1, Cost: 0
仮想マシンが初期配置された ESXi ホスト esxi-02
2023-10-24T11:29:46.136+01:00 verbose vpxd[46144] [Originator@6876 sub=cdrsPlmt opID=lo45z78y-7031-auto-5fc-h5:70003089-1c-01] Goodness on [vim.HostSystem:host-27462,esxi-02.gslabs.local]: Performance: CPU 3092 MainMem 3092 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Headroom: CPU 2802 MainMem 2801 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Overall performance: 3092,Overall headroom: 2538, CPU demand: 3092, IsRegisteredHost: false
2023-10-24T11:29:46.136+01:00 verbose vpxd[46144] [Originator@6876 sub=cdrsPlmt opID=lo45z78y-7031-auto-5fc-h5:70003089-1c-01] Expected gain on host-27462: Rate: 198, GainSec: 193, vMotionRate: 2, PlacementType: 0, vMotionSec: 2
2023-10-24T11:29:46.136+01:00 verbose vpxd[46144] [Originator@6876 sub=cdrsPlmt opID=lo45z78y-7031-auto-5fc-h5:70003089-1c-01] Choice host-27462: Expected gain: 38214, Cost: 6000
初期配置には CPU performance goodness の値が影響し、上記の例では値が 3092 または 2993 と esxi-02 の値が esxi-01 を上回っているため esxi-02 に仮想マシンが配置されています。
ロードバランシングによる処理時:
移行元ホスト esxi-02
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Goodness on [vim.HostSystem:host-27462,esxi-02.gslabs.local]: Performance: CPU 3092 MainMem 3092 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Headroom: CPU 3019 MainMem 2790 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Overall performance: 3092, Overall headroom: 2724, CPU demand: 3092, IsRegisteredHost: true
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Choice host-27462: Expected gain: 1, Cost: 0
移行先ホスト esxi-01
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Goodness on [vim.HostSystem:host-348865,esxi-01.gslabs.local]: Performance: CPU 3092 MainMem 3092 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Headroom: CPU 3092 MainMem 3092 MemTiering 3092 Network 3092 FTLogging 3092 FTSecondary 3092 vSAN 3092 SDRS 3092 Maintenance 3092 , Overall performance: 3092, Overall headroom: 3092, CPU demand: 3092, IsRegisteredHost: false
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Choice host-348865: Move type: Headroom, Dominant contributor: MainMem
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Skip thrash detector rate 0.5
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Expected gain on host-348865: Rate: 368, GainSec: 102, vMotionRate: 2, PlacementType: 1, vMotionSec: 2
2023-10-24T11:30:21.998+01:00 verbose vpxd[43717] [Originator@6876 sub=cdrsPlmt opID=CdrsLoadBalancer-2b9c13b6] Choice host-348865: Expected gain: 37536, Cost: 0
上記では移行元と移行先ホストの CPU performance goodness 値は同じですが、移行先ホストの memory headroom 値が 3092 と移行元の 2790 よりも高い値であるため、DRS のロードバランシングにより仮想マシンが移行されています。
VMware vSphere 7.0.x
VMware vSphere 8.0.2
仮想マシンパワーオン時の初期配置では、DRS は ESXi ホストの CPU 周波数を使用して初期 CPU 需要量を計算し、そこからペナルティを引いた値を goodness 値として算出します。
ただロードバランシングでは、DRS は実際の仮想マシンによる CPU 需要量を使用して計算を行います。
初期配置の決定方法であるこの動作は DRS の仕様として設計されているものであるため、解決策はありません。
Workaround:
CPU 周波数の異なる ESXi ホスト間で周波数の差にかかわらず初期配置を行う必要がある場合、vpxd の詳細オプションである「config.drs.performanceGoodnessMarginPct」の値を設定します。
上記オプションにより ESXi ホストそれぞれの goodness 値の差が指定したパーセンテージ以下である場合、同じ goodness 値を持っていると判断します。
デフォルトでは 1% が設定されています。
オプションの設定値算出方法の例:
esxi-01: Overall performance: 2993
esxi-02: Overall performance: 3092
上記の場合、goodness 値の差は (3092-2993)/2993 * 100 = 3.3 % となります。
そのため、「config.drs.performanceGoodnessMarginPct」オプションの値を 3.3% 以上 (4% など) となるように指定することで、ESXi ホストごとの CPU 周波数に依存せず初期配置先のホストが決定されます。
注: 上記オプションの設定に vpxd の再起動は必要ありません。