トップ回答者
Hyper-V2.0の仮想マシンに割り付けられる仮想プロセッサを物理プロセッサ上の論理プロセッサ(コア)に割り当てる方法

質問
回答
すべての返信
-
中年やっちゅうねん様
お忙しい中、質問に回答いただきありがとうございました。
Hyper-Vマネージャ->プロセッサ->論理プロセッサの数にて、任意のプロセッサにどれだけのコアを割り当てるのか、設定できることが分かりました。ずうずうしいのですが、この分野についてもう一点ご教示下さい。
Hyper-Vの仮想マシンは、マルチプロセッサ構成に対応し、1~4つの仮想プロセッサを割り当てることができますが、仮想プロセッサの最大値が4になる理由を教えて下さい。
仮想プロセッサの実態は、スレッド機能によるコンテキストスイッチングと伺っていますが、とすると、最大値を4にしなくても良いのではないかと思います。一方、SMP構成のIAサーバでは、MP間のmutexロック(排他制御)の特性から4プロセッサが特性上の最大値と言われていますが、仮想プロセッサの実態が、スレッド機能によるコンテキストスイッチングだとすると、最大4つという制限値を設けなくて良いのではないかと感じています。
もしかすると、私の不勉強から的外れな理論の展開になっているのかもしれませんが、小職の疑問にご回答いただければ幸いです。
-
仮想プロセッサの最大値が4になる理由は、私は知りません。
ところで、
>SMP構成のIAサーバでは、MP間のmutexロック(排他制御)の特性から4プロセッサが特性上の最大値と言われていますが
はどこで言われている話でしょうか。私は初耳です。
Windows , Soralis の Mutex のDocument を確認しましたが、そのような特性は記述されていません。
また、4 プロセッサ以上のCPUでも、mutex は問題なく使用できています。CreateMutex function
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(v=vs.85).aspx相互排他ロックの使用方法
http://docs.oracle.com/cd/E19455-01/806-2732/6jbu8v6op/index.html
具体的に、どこのドキュメントで、SMP構成のIAサーバでは、MP間のmutexロック(排他制御)の特性から4プロセッサが特性上の最大値といっているのでしょうか。mutexロックの特性とは、具体的にはどのような特性でしょうか。 -
中年やっちゅうねん様
>仮想プロセッサの最大値が4になる理由は、私は知りません。
>
残念です。回答ありがとうございました。>ところで、
>
>>SMP構成のIAサーバでは、MP間のmutexロック(排他制御)の特性から4プロセッサが特性上の最大値と言われていますが
>
>はどこで言われている話でしょうか。私は初耳です。
>Windows , Soralis の Mutex のDocument を確認しましたが、そのような特性は記述されていません。
>また、4 プロセッサ以上のCPUでも、mutex は問題なく使用できています。
>
>CreateMutex function
>http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(v=vs.85).aspx
>
>相互排他ロックの使用方法
>http://docs.oracle.com/cd/E19455-01/806-2732/6jbu8v6op/index.html
>
>
>具体的に、どこのドキュメントで、SMP構成のIAサーバでは、MP間のmutexロック(排他制御)の特性から4プロセッサが
>特性上の最大値といっているのでしょうか。mutexロックの特性とは、具体的にはどのような特性でしょうか。
>当社内にあるドキュメントを探して、提示することができませんので、インターネットに公開されている情報で回答します。
対称型マルチプロセッシング(SMP)ですが、出展がウィキペディア(フリー百科事典)ですので全文が正しい訳ではないのですが、
http://ja.wikipedia.org/wiki/%E5%AF%BE%E7%A7%B0%E5%9E%8B%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0
--------------------------------------------------------------------------------------------------------------
[引用]
1990年代前半からMIPSのR4000シリーズ、SPARCシリーズといったマルチプロセッシングを前提としたRISCプロセッサが登場し、マルチプロセッサ処理を前提としたUNIX SVR4.2MPの国産UNIX(UX/4800,UXP/DSなど)及び、SUNのSolarisなどでの採用が急速に進み、サーバにおける処理高速化手法の主流として汎用化していた。しかし、安価な量産系サーバにおいては、CPU/メモリ間の接続はバス方式が主体であり、速度もそれほど速いものではなかったため、SMPの最大構成は8CPU、実効性能で単一CPUの5倍程度に留まり続けた。
1980年代後半に高価な特殊サーバにて使用されていたCPU間/メモリ間にクロスバースイッチが量産サーバにも採用され、ギガビット単位での情報速度を確保できるようになって以降、32/64/128といった大規模SMP構成がとれるようになっている。
--------------------------------------------------------------------------------------------------------------ここでは、最大構成が8CPUと表記されていますが、特性上の実行性能から4CPUが最大構成と言われています。
CPU数を増やすと直線的に性能が倍増する訳では無く、実行性能が伸び悩む理由は、マルチプロセッサ・システム間で共有されるカーネルデータの操作を保護(排他)しなければならない機構が必要だからです。
その為、実装できるコア数が増えるとNUMAのようなCPU群を分割して使用する方法が、一般的となってきます。
関連項目
Test-and-Set
http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%BB%E3%83%83%E3%83%88
-
こんにちは。
引用されている wiki 自体に、既に1980年代後半には32/64/128といった大規模SMP構成がとれるようになっている、と説明されています。
http://ja.wikipedia.org/wiki/対称型マルチプロセッシング
>しかし、安価な量産系サーバにおいては、CPU/メモリ間の接続はバス方式が主体であり、速度もそれほど速い>ものではなかったため、SMPの最大構成は8CPU、実効性能で単一CPUの5倍程度に留まり続けた。
>1980年代後半に高価な特殊サーバにて使用されていたCPU間/メモリ間にクロスバースイッチが量産サーバに>も採用され、ギガビット単位での情報速度を確保できるようになって以降、32/64/128といった大規模SMP構成がとれるようになっている。[1]非常に古いサーバーであれば、CPU-メモリ間の単純なバス方式によるボトルネックや、あるいはOSからの処理によってはバスロックが発生したため、8CPU程度でも、ロック処理によるボトルネックは目に見える程発生したかもしれません。
ただ、wikiにもあるようにこれはもう過去の話です。(今でも、CPUの数が増えれば比例して性能が出るわけではありませんが)
特性上の実行性能から4CPUが最大構成と言われている理由と、mutexの特性について再度確認をお願いできますでしょうか。
(特定のアプリケーションの実装が悪くて、4cpuぐらいが限界という話はあるかもしれません。しかしそれは、そのアプリケーション固有の話です )
"当社内にあるドキュメントを探して、提示することができませんので"という事ですが、現在は通用しない、古い話がそのまま放置されている可能性がありますので、ドキュメント自体の見直しも必要かもしれません。
-
>特性上の実行性能から4CPUが最大構成と言われている理由と、mutexの特性について再度確認をお願い>できますでしょうか。
SMP構成の電算機の場合、プロセッサ間で共有するOSカネールモードのデータ領域において、MP間で確実に排他制御すべきデータが存在します。
一般的に、OS内でのデータ(イベント)の排他制御には、セマフォ機能を使用しますが、MP間でのデータの排他制御には、test-and-setというアトミック処理ができるTAS命令を使用し、スピンロックの機能で排他制御を行います。このスピンロック処理は、MP間で行われ、CPU数が増えるに連れ、この処理のオーバーヘッドが乗数的に増加します。
このオーバヘッドを低減するには、各CPUとメインメモリを繋ぐメインバスの性能向上が鍵ととなります。
従いまして、IAサーバで採用されているバス機構よりも、この部分をインターコネクトで実装している電算機の方が、より多くのCPUを実装し、実行性能を引き出すことができます。
つまり、並列計算機アーキテクチャとして性能を引き出せることになります。
特性の要因は、上記の動作に伴うもので、IAサーバについては、4つが事実上の最大構成だと思います。
-
一般的な排他制御の解説 ( アトミック処理についてTASだけ書いて、Compare and swaptが出てこないところを見ると、かなり古いドキュメントを参照しているようです ) とNUMAの概要の話からいきなり4CPUが最大構成と結論に持っていったり、mutexの特性については触れていない等の状況から、どうやら重要な情報は持っていないようなので、これ以上のご高説は結構です。
4CPUが最大構成という話は、おそらくアムダールの法則を使った、予測値だろうと思います。
これはこれでひとつの情報ですが、万能ではなく、状況によってCPUの最大構成は変化します。( アプリケーション、OSの実装によって大きく異なる。)以下のドキュメントが解りやすく解説しています。
3.5.1 アムダールの法則
http://docs.oracle.com/cd/E19205-01/820-1209/bjaem/index.html -
こんにちは。
フォーラム オペレーターの田中夢です。
中年やっちゅうねん さん
いつも参考になるアドバイスをありがとうございます。
三宅隆博 さん
最後に投稿されてからしばらく経ちましたが、その後 中年やっちゅうねん さんの投稿をご覧になっていただけましたでしょうか?
元々のご質問につきましては、中年やっちゅうねん さんの投稿を参考にしていただけたようですので、勝手ながら私のほうで [回答としてマーク] とさせていただきますね。
今後とも TechNet フォーラムをどうぞよろしくお願いしますね。
---------------------------------------------------------------------
日本マイクロソフト株式会社 フォーラム オペレーター 田中夢