事の始まりはWccftechのこの記事でした。
当サイトではこちらの記事になります。
Windows 10 Proは128スレッドのAMD Ryzen Threadripper 3990Xを処理できない
こちらでWindows10 Pro とWindows10 Pro for Workstation/Enterpriseとの間に処理能力に差が出るという話題が出ていました。
私もミスリードしてしまったこともあり、責任を取る意味でも今一度Windows10の仕様を含めて、情報を整理してみます。
Windows10各エディションの仕様
エディション | Home | Pro | Pro Education |
Education | Pro for Workstations |
Enterprise |
対応CPU アーキテクチャ |
IA-32, x86-64 | |||||
種別 | OEM リテール |
OEM リテール ボリューム ライセンス |
アカデミック
ボリューム |
ボリューム ライセンス |
OEM (ワーク ステーション PC向) リテール (Home/Pro からの アップグレード) ボリューム ライセンス |
ボリューム ライセンス |
「K」及び「KN」 版の有無 |
有 | 有 | 有 | 有 | 有 | 有 |
最大物理 メモリ容量 |
4GB(32bit) 2TB(64bit) |
4GB(32bit) 2TB(64bit) |
4GB(32bit) 6TB(64bit) |
|||
最大CPU ソケット数 |
1 | 2 | 4 | |||
最大物理 CPUコア数 |
32(32bit) 64(64bit) |
32(32bit) 128(64bit) |
32(32bit) 256(64bit) |
|||
最大論理 プロセッサ数 |
32(32bit) 256(64bit) |
32(32bit) 256(64bit) |
32(32bit) 256(64bit) |
ソース:Windows 10 editions(英語版Wiki) 及び @IT – Windows OSでサポートされている最大CPU数/コア数/スレッド数(論理プロセッサ数)は?[2016/12/21]
非常に分かりづらいと思いますが、Windows10というすでにインフラ化しているメジャーな商用OSにも関わらず、詳しい仕様がはっきり公開されていませんでしたので、英語版のWikiと大手サイト@ITさんのページから情報を参照して統合したのが上の表になります。
なお、わたくし自身はRyzn Threadripper 3990Xを購入できるだけの財力がありませんので、あくまでもネット上の情報を引用していることをお断りさせていただきます。
正直、物理コア数と論理コア数の整合性が取れてませんので、「本当かな?」と思わないではないですが、それなりに公の場にて情報が公開されているサイトの情報を引用すると上の表のようになります。
1物理コア4論理プロセッサというのは仕様としてはありうるので、信ぴょう性が0かといわれてるとそんなことはありませんが・・・・。
私が元の記事の解説に書いた「Homeは64スレッドまで」というのは正しくは「64物理コアまで」ということになります。
ちなみにサーバー用OSをクライアントとして使うのはセキュリティ対策ソフトの入手性などを考えるとお勧めできませんが、Windows Server 2016 Standardの場合、最大ソケット数64、最大物理コア数無制限、最大論理プロセッサ数512LPとなっています。
また、Linuxの場合、RHELの最新版8は768LPとなっていますが、こちらは物理/論理の区別はないため、最大768論理・物理プロセッサ対応しているということになります。
CentOSやUbuntuは特に資料が見つけられませんでした。
おおもとになったAnandtechの記事を翻訳してみる。
「64コアThreadripper 3990X CPUレビュー:混乱の最中で、AMDは機会を求めています」より該当部分を抜粋
Windowsとマルチスレッドの問題(必読)
残念ながら、すべてがWindows 10をインストールして128スレッドの冒険に出るほど簡単ではありません。
Windowsを使用しているほとんどのホームユーザーは、通常、Windows 10 HomeまたはWindows 10 Proのバージョンを使用しています。
これらは、ワークステーションユーザーの間でもかなり遍在しています。
これらのオペレーティングシステムが持つ問題は、64スレッドを超えると見苦しいものになります。
明らかなように、マイクロソフトはホーム(またはほとんどのワークステーション)システムがこの量を超えることを決して予期していませんでした。
システムで64を超えるスレッドが発生するたびに、Windowsはそれらのスレッドをプロセッサグループに分離します。
これが行われる方法は非常に初歩的です。列挙されたコアとスレッドのうち、最初の64は最初のグループに、2番目の64は次のグループに、というように続きます。
これは、タスクマネージャに移動して特定のプログラムのアフィニティを設定しようとすることで最も簡単に観察できます。
64コアプロセッサでは、同時マルチスレッドが有効になっている場合、128スレッドのシステムとなります。
上記のように、これは2つのグループに分割されます。
システムがこのモードになっていると、ほとんどのソフトウェアが適切に動作するのが非常に難しくなります。
プログラムが起動すると、負荷に基づいてプロセッサグループの1つにプッシュされます。– 1つのグループがビジーの場合、プログラムは別のグループで生成されます。
プログラムがグループ内で実行されている場合、プロセッサグループに対応していない限り、同じグループ内の他のスレッドにのみアクセスできます。
これは、マルチスレッドプログラムが128スレッドを使用できる場合、プロセッサグループを念頭に置いてビルドしないと、64へのアクセスでしか生成されない可能性があることを意味します。
これがある程度馴染みのあるものであれば、NUMA、つまり不均一なメモリアーキテクチャについて聞いたことがあるかもしれません。
これは、デュアルソケットシステム内など、システムのCPUコアのメインメモリに対するレイテンシが異なる場合に発生します。
コアに直接接続されたメモリにすばやくアクセスできますが、コアが他の物理CPUに接続されたメモリにアクセスする必要がある場合は、はるかに遅くなります。
プロセッサグループは、これを回避する1つの方法であり、スレッドがCPUからCPUにジャンプするのを防ぎます。
ここでの唯一の問題は、3990Xに128のスレッドがあるにもかかわらず、すべて1つのCPUであるということです!
Windows 10 Proでは、これが問題になります。
タスクマネージャーを直接確認できます。
※ クリックすると別Window・タブで開きます。
ここでは、64個すべてのコアと128個のスレッドが人為的な負荷でロードされています。
ただし、ここで重要なのはソケット数です。
システムは、システム内に多数のスレッドがあるため、2つのソケットがあると考えています。
これは大きな痛みであり、一部のベンチマークでは多くの速度低下の原因となっています。
(興味深いことに、72個の軽量コアと288スレッドの4ウェイHTを備えたIntelの最新のXeon Phiチップは、5つのソケットとして表示されます。
もちろん、これをすべて回避する簡単な解決策があります-マルチスレッドを無効にします。
これは、64コアがまだあることを意味しますが、現在はプロセッサグループが1つしかありません。
※ クリックすると別Window・タブで開きます。
チップのパフォーマンスの大部分はまだ残っています(ベンチマークの後半で確認します)。
ただし、パフォーマンスの一部が失われています。64スレッドが必要な場合は、節約して32コアを購入します。
これを回避する簡単な方法はないようです。
しかし、Windows 10にはさまざまなバージョンがあることが知られています。
ソース:Windows 10 editions(英語版Wiki)
Microsoftは小売店でWindows 10 Home、Windows 10 Pro、Windows 10 Pro for Workstationsを販売しており、Windows 10 Enterpriseのキーも販売しています。
これらはそれぞれ、市場に基づいた通常の機能の制限とは別に、プロセッサー数とソケットにも制限があります。上記の図では、Windows 10 Homeが64コア(スレッド)に制限されているのに対し、Pro / Educationバージョンは128、Workstation / Enterpriseは256に制限されていることがわかります。
Windows Serverもあります。
現在、WorkstationとEnterpriseは複数のプロセッサグループを念頭に構築されていますが、Proはそうではありません。
これは、スケジューラーの調整によってもたらされました。これは、設計のより細かい要素をさらに掘り下げなければすぐにはわかりません。パフォーマンスに大きな違いが見られました。
違いを確認するために、次の比較を行いました。
64 C / 128 T(SMTオン)、Win10 ProとWin10 Entを搭載した3990X
3990X、SMTオンvs SMTオフで10 Proに勝つ
これは、SMTが全体的なパフォーマンスに与える影響のケースだけではありません–スケジューラーとOSがコアを使用可能にし、作業を分散する方法は、大きな要因です。
3DPMでは、標準の非専門家コードでは、SMTのオンとオフの違いは8.6%ですが、エンタープライズに移行するとその半分が戻ります。
手動で調整したAVXコードに移行すると、追加のスレッドを使用でき、スレッドごとに2倍の速度が向上します。 ここでも、EnterpriseバージョンはProよりもわずかにリードしています。
DigiCortexはよりメモリバウンドベンチマークであり、SMTを無効にするとCPUからメモリへの通信が解放されるため、大幅に向上することがわかります。
企業は、SMTを有効にしたまま利益の半分を引き戻します。
Photoscanは可変スレッドテストですが、SMTを無効にすると、各スレッドのタップリソースが増え、パフォーマンスが向上します。
繰り返しますが、W10 EnterpriseはSMTのオフとオンの違いを分割します。
私たちの最大の違いは、新しいNAMDテストにありました。
ここでコードはAVX2アクセラレーションであり、注意すべき違いはSMT Onであり、W10 ProからW10 Entへの移行は8.3倍の高速化です。
通常のProでは、128個のスレッドを生成するときに、実際の16個のコアのみに配置され、他のコアは使用されないことに気付きました。
SMT-Offモードでは、より多くのコアが使用されていますが、スコアは3950Xとほぼ同じであるように見えました。
すべてのスレッドが実際に使用されていたのは、W10 Enterpriseに移行するまででした。
スケールの反対側では、コロナは実際にさまざまなプロセッサグループを活用できます。 SMTオフからSMTオンへの改善、そしてエンタープライズへの小さなジャンプの改善が見られます。
同様に、Blenderのテストでは、プロセッサグループを持つことは問題ありませんでした。エンタープライズは少しジャンプします。
POV-Rayは、OSバージョンに関係なく、SMTを無効にすることから恩恵を受けます。
一方、ハンドブレーキ(AVXアクセラレーションによる)は、Windows 10 Enterpriseで大幅に向上します。
判断とは
マルチスレッドテストデータから、結論は2つしかありません。
1つは、SMTを無効にすることです。
ほとんどのベンチマークはプロセッサグループが何であるかを理解していないため、ほとんどのベンチマークでパフォーマンスが向上するようです。
ただし、SMTを有効にする必要がある場合は、通常のWindows 10 Proを使用しないでください。代わりにPro for Workstations(またはEnterprise)を使用してください。
結局のところ、これはエンタープライズグレードのラインをすり抜けているハードウェアを使用する際の問題です。
また、エンタープライズソフトウェアライセンスのトリガーとなるラインをすり抜けています。
ありがたいことに、コアごとに完全にライセンスされているワークステーションソフトウェアは、サーバーレルムとは異なり、まだほとんど存在しません。
最終的に、これは次のページでのCPU間の比較に少し困惑させます。
通常、SMTを有効にしてW10 ProでCPUを実行しますが、これらのベンチマークから、すべてのマルチスレッドシナリオで最良の結果が得られないことは明らかです。
今後、16コアを超えるプロセッサをテストし、Windows 10 Enterpriseで実行する方法を検討する必要があります。
以下のページでは、完全を期すためにW10 ProおよびW10 Enterpriseのデータを含めます。
(該当部分の翻訳終了)
参考:
Windows10 Enterpriseを無料でテストする方法
EnterpriseやPro for Workstationは非常に高価なOSですので、購入する前に試してみたいと思う方もいると思います。
以下に90日間使用できる試用版のリンクを張っておきますので、Ryzen Threadripper 3990Xをお持ちの方はテストしてみてください。
このような用途のためにあるといってもよいでしょう。
Windows10 Enterprise試用版ダウンロードリンク
※ ダウンロードにはユーザー登録が必要になります。
なお、今回に関しては「解説」で無用なコメントを入れることは差し控えます。