VMware Global Community
ukky7272
Enthusiast
Enthusiast

高パフォーマンスの仮想PCを作成するには?

VMWare Workstation15Proを使ってます(16にアップグレードすべきか悩み中)
ホストPCのスペックは
・Core i7-11700 2.5GHz(コア数 8、スレッド数16)
・メモリ32GB
・システムとは別のSSDドライブ 1GB
・Windows10 Pro 64bit

上記仕様のホストPCの中に
以下の仕様の仮想PCを4つ作成するとき、できるだけパフォーマンスを上げたい場合、
あなただったらどんな設定にするかご意見ください。
※ゲストOSはWindows10 Pro 64bitでリモートデスクトップ接続で利用します

・プロセッサ数、プロセッサごとのコア数はいくつにしますか?
・メモリは何GBにしますか?
・全ディスク容量を割り当てるか否か?
・仮想ディスク容量はいくつにしますか?
・仮想ディスクを単一、複数どちらにします?
・他にこだわりのポイントあれば

人それぞれだと思いますが、個人の主観で結構なのでご意見頂けると幸いです。

Reply
0 Kudos
6 Replies
kawaman
Leadership
Leadership

作成する 4つの VM が 80% くらいのリソース利用率でかなり高く稼働する前提で、ホスト OS 側は他のアプリは動作させず、であれば
CPU はホスト OS とオーバーコミットし、メモリはオーバーコミットせず全て消費(ホスト分に4GB程度残す)、vDisk もあらかじめそれぞれの VM 分全部割当(Thick)として、1VM 辺り

  • 4 vCPU (4 Thread )
  • Mem 7GB
  • vDisk 200 GB・全割当(Thick)・単一

これを 4VM に割り当てるかな、と。

※ SSD 1GB は恐らく 1TB の誤記という前提で、100% 使い切るのは性能低下と運用のリスクがあるので 200GB * 4 VM 分の割り当てで考えました。

Workstation ではなく vSphere 前提ですが、CPU やメモリの消費は基本同じなので以前書いた以下の記事の考え方がベースです。
https://kwmtlog.blogspot.com/2020/12/vspherebestpractice2021.html

ご参考まで

Reply
0 Kudos
ukky7272
Enthusiast
Enthusiast

kawamanさん

こんな質問に回答いただいてありがとうございます。

どこで聞いたら良いか分からずここに辿り着いた次第でした。

SSD1TBが正解です。失礼いたしました。

具体的な回答、非常に助かります。一旦真似してみようと思います。

ここだけ再確認させてください。

4 vCPU (4 Thread )

仮想マシン作成時には以下の様に入力します。

プロセッサ数:2
プロセッサごとのコアの数:2
合計プロセッサ コア:4

これはつまり、タスクマネージャーを開いた時、4つのグラフが表示される状態という事でしょうか?
多分私の理解が間違ってるんじゃないかと・・・
上記書式で訂正いただけると助かります。
※ここが一番不安なところです。

よろしくお願いいたします。

Reply
0 Kudos
kawaman
Leadership
Leadership


4 vCPU (4 Thread )

仮想マシン作成時には以下の様に入力します。

プロセッサ数:2
プロセッサごとのコアの数:2
合計プロセッサ コア:4


はい、その認識で合っています。

プロセッサ数 : 1
プロセッサごとのコア数 : 4
合計プロセッサ コア : 4

でも性能的には同じリソース割り当てになります(昔この違いの検証結果の WhitePaper を見た気がするのですが今見つからず...)

プロセッサ数で制限がある Guest OS の場合はプロセッサ数を減らしてコアを増やす、といった設定で OS の制限を回避する事もあります。

 

Reply
0 Kudos
ukky7272
Enthusiast
Enthusiast

ありがとうございます!
もう少しお付き合いいただければ幸いです。

私のホストPCは、こんな仕様です。
 ・ソケット1
 ・コア8
 ・論理プロセッサ16
※私の理解では、Hyper-Threadingでコア数が2倍になるため、
 コア数8だと論理プロセッサ16になると思ってます。
 VMwareにはハイパースレッディングの考えは無いんですよね?
 仮想マシン作成時の名称「プロセッサ数、プロセッサごとのコアの数、合計プロセッサ」と、
 Windows10での名称「ソケット、コア、論理プロセッサ」とはどのように紐づくか不明です。

もし物理PCのパフォーマンスに極限に近づけるなら、
ゲストPCでは、
 プロセッサ数 : 2
 プロセッサごとのコア数 : 8
 合計プロセッサ コア : 16
になるんでしょうか?

しかし4台作成という条件だから、
kawamanさんは、
4で割って1台あたり「合計プロセッサ コア : 4」という計算なのでしょうか?

Reply
0 Kudos
kawaman
Leadership
Leadership

VMware Workstation や vSphere ESXi は母艦となる物理マシンで Hyper Threading / HT が有効になっている場合は
その HT 1 スレッドを論理 CPU 1 コアとして扱い、1 vCPU のリソースとなります。

そのため、"VMwareにはハイパースレッディングの考えは無いんですよね?" の問いに対しては、
HT 有効な物理マシン上での vCPU は HT 1 スレッド分のリソース、
HT 無効な物理マシン上での vCPU は 物理 1 コア分のリソースが割り当てられることになります。

 

但し、物理マシンの HT で払い出される vCPU リソースは同時に別の VM に割り当てられることはなく、1 VM に 2 vCPU 割り当てられている場合にのみ同時に 2 スレッド分の vCPU が消費されます。※ 先の Blog の "物理 CPU Core と vCPU の割り当ての関連性" を参照願います。

kawaman_0-1649030673503.png

 

> もし物理PCのパフォーマンスに極限に近づけるなら、
> ゲストPCでは、
>  プロセッサ数 : 2
>  プロセッサごとのコア数 : 8
>  合計プロセッサ コア : 16
> になるんでしょうか?

構成上、上記は組めるのですが実際には母艦側の様々な CPU 処理で利用されるリソースが割り込むため、
母艦の全リソースを VM に割り当ててしまうのは健全ではありません。

恐らく、高い負荷を VM 側で要求する場合には母艦側でもある程度の CPU 要求があるため CPU 処理の待ちに割り込みが多々発生して VM の性能が低下する可能性が高くなります。

Workstation の CPU 割り当ての仕組みとは恐らく異なるアーキテクチャとなりますが、
こちらも先の Blog の "vCPU は必要性能と物理 CPU に見合った適切な数を割り当てる" の項と、"ESXi ホストの CPU 負荷の上限について" の項に
高い負荷が発生している時の物理 CPU リソースと仮想 CPU リソースの関係を簡易的にですがイラストとグラフで表現しているのでイメージが付きやすいかと思います。

 

> しかし4台作成という条件だから、
> 4で割って1台あたり「合計プロセッサ コア : 4」という計算なのでしょうか?

はい、上記の計算がベースとなりますが、1 VM に 16 vCPU をまとめて割り当てる場合より、1 VM 4 vCPU 構成を 4 VM 用意する方が CPU の割り当てスケジューリングに柔軟性が生まれるので 4VM 構成の方が母艦側の CPU 処理割り込みを上手くコントロールできると考えています。

経験上、1 物理 PC に 1 VM のみ動作させる場合でも、10% ~ 20% の CPU の余裕は持たせたサイジングが安定のためにはお奨めかなと思います。
後はそれぞれの構成でのベンチマークをとってみる、ですかね。

ご参考まで、、、

Reply
0 Kudos
ukky7272
Enthusiast
Enthusiast

詳しいご説明、ありがとうございます!

なるほど。ゲストでの奇数個のCPU割り当ては、物理PCのスレッド1個分リソースを無駄にしてしまうようですね。

リンク先のblogも拝見させて頂きました。
専門すぎて半分も理解できてませんが、この先必要になるであろう情報が詰まってる気がします。
今後も活用させて頂きます。

最近のストレージプールの進歩からは、ThickよりThin構成にした方が良いような事が書いてありましたが、
当方の環境、用途だとThick割り当てが無難と思ったので、ご提案の構成を6GBにして作成してみようかなと思います。
※気持ち的に偶数の方がしっくりくるかな?程度です。

  • 4 vCPU (4 Thread )
  • Mem 6GB
  • vDisk 200 GB・全割当(Thick)・単一

ありがとうございました。

Reply
0 Kudos