次の2つの状況で、同じコンピューターで大規模なCAEシミュレーションをテストすることについて質問したいと思います。
- 純粋なUbuntuシステム
- Windows 10(WSL)のUbuntuシステム
両方の場合の計算速度はほぼ同じですか、または異なりますか?
次の2つの状況で、同じコンピューターで大規模なCAEシミュレーションをテストすることについて質問したいと思います。
両方の場合の計算速度はほぼ同じですか、または異なりますか?
回答:
シミュレーションソフトウェアは、CPUバウンドまたはメモリバウンドのいずれかです。このようなワークロードの場合、「ベアメタル」またはWSL(またはネイティブ実行を使用する他の互換性レイヤーまたはVM)でのコードの実行に大きな違いがあることを除いて、どちらの場合もOSはほとんど待機しているためです。シミュレーションコードはCPUで直接実行されます。
ただし、シミュレーションが少なくとも部分的にI / Oバウンドである可能性もあり、そこから違いが生じる可能性があります。どうやら、WSL(現在)にはかなり遅いファイルシステムインターフェイスレイヤーがあり、ディスクI / Oを大幅に遅くする可能性があります。通常はすべきではありませんファイルの読み取りと書き込みに時間の大半を費やす。必要な場合は、不要な物理ディスクアクセスを回避するために、RAMディスク(ネイティブ** Linuxのtmpfsなど)から実行することを検討してください。
いずれの場合でも、確認する唯一の方法は、両方の環境でシミュレーションをテストし、実行にかかる時間です。ただし、それを行う前に、2018年2月からのPhoronixによるWSL対Docker対VirtualBox対ネイティブLinuxパフォーマンスベンチマークのような既存のベンチマークを見て、同じコンポーネントにストレスを与えるテストの結果を調べてください。シミュレーションのようにシステムの。
(FWIW、Phoronixの結果は上記で概説した一般的な原則とほぼ一致しているようですが、VirtualBoxのようないくつかの注目すべき奇妙な点がいくつかのI / Oバウンドベンチマークで明らかにネイティブLinuxを上回っています。上記に気づかなかった潜在的に関連する問題の1つは、ベンチマークは、異なるホスト環境間および裸のハードウェア上で実行している場合でも異なるLinuxディストリビューション間でマルチスレッドOpenMPパフォーマンスの大きな違いを示すことです。スレッド化とIPCはカーネルによって処理されるため、それはそれほど驚くことではありません。そこにあるディストリビューションの違いの多くは、異なるランタイムおよび/またはコンパイル時のカーネルチューニングパラメーターに帰着するでしょう。
*)2016年のこのMSDNブログ投稿によると、実際にはWSLに2つのファイルシステムインターフェイスコンポーネントがあります:VolFsは、NTFSを介してネイティブLinuxファイルシステムセマンティクスをエミュレート/
し/home
、たとえば、およびをマウントするために使用されます。ホストWindowsドライブへのアクセスなどに使用され/mnt/c
ます。ソフトウェアが同じファイルへの複数のハードリンクなどのネイティブLinuxファイルシステム機能を特に必要としない場合、DrvFsフォルダーにデータファイルを保存するように設定すると、ファイルアクセスパフォーマンスが向上する場合がありますWSL。
**)2017年5月のこのRedditスレッドによると、WSLの「tmpfsは現在ディスクを使用してエミュレートされています」。過去1年で何かが変更されていない限り、これはおそらく、WSLでtmpfsを使用しても通常のオンディスクファイルシステムを使用した場合よりもパフォーマンスが向上しないことを意味します。
-O3 -march=haswell
、何か。ClearLinuxがカーネルを構築するために実際に使用するものはわかりませんが、おそらくBMI2 // popcnt
glibcとカーネルに測定可能な違いをもたらすものは何でも(カーネルが勝ちました。ただし、ソフトウェアRAID5 / 6エラー修正データなどの特定のコードを除き、カーネルはFPUレジスタにアクセスすることを避けるため、AVXの恩恵は受けません。)
WindowsのUbuntu(WSL-2017 Fall Creators Update)は、Linux環境の「純粋な」Ubuntuよりも明らかに遅いです。
たとえば、Windows 10ではスクリーンペインティングにUbuntu 16.04と比べて何倍も時間がかかります。つまり、Windows 10ではカーソルが実際に移動するのを見ることができます。
WSL Bashスプラッシュスクリーンのペイントには約5秒かかります。比較すると、Ubuntu 16.04の同じスプラッシュスクリーンの場合、約1 1/2秒です。
最初のセクションでは、画面I / Oの速度が遅いことを示していますが、CPUベンチマークについてはどうですか?
このUbuntuの質問に関するQ&A:LinuxのCPUベンチマークユーティリティから、LinuxおよびWindows上のUbuntu 16.04でテストを実行しました。Linuxでは、Windows 10バージョン1709では約24秒、約31秒です。Linuxは6秒高速で、約25%高速です。しかし、Windows 10をバージョン1803(Redstone 4別名Spring Creators April 2018 update)にアップグレードしたところ、Linuxと同じ24秒かかりました。
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.5065s
total number of events: 10000
total time taken by event execution: 23.5049
per-request statistics:
min: 2.13ms
avg: 2.35ms
max: 8.52ms
approx. 95 percentile: 2.76ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.5049/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 30.5350s
total number of events: 10000
total time taken by event execution: 30.5231
per-request statistics:
min: 2.37ms
avg: 3.05ms
max: 6.21ms
approx. 95 percentile: 4.01ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 30.5231/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.7223s
total number of events: 10000
total time taken by event execution: 23.7155
per-request statistics:
min: 2.21ms
avg: 2.37ms
max: 4.53ms
approx. 95 percentile: 2.73ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.7155/0.00
注: 2018年のWindows 10春の更新(Redstone 4と呼ばれる)は5月9日(4日前)にリリースされました。改善を確認するためにすぐにインストールする予定です。間違いなくたくさんあります。私が興味を持っていることの1つは、cron
起動時にジョブを実行できることです。gmail.comへの毎日の自動バックアップに必要です。
注2: Windows 10ビルド1803(2018年4月Spring Creators Update別名Redstone 4)をインストールしたばかりで、画面の描画ははるかに高速です。Bashスプラッシュ画面を表示するのに、5秒ではなく3秒になりました。CPUベンチマークは現在Linuxと同等です。
それについて考えてみてください-WSLでは、コンピューターは完全なグラフィカルWindowsシステム(そもそも恐ろしいリソースの大量消費)とUbuntuサブシステムを実行しています。ネイティブUbuntuでは、Ubuntuのみが実行されます。
pstree
またはを実行するとps auxw
、すべてのプロセスがまだ生きていることは明らかです。(またはtop
、Mを押してメモリ消費量でソートします)。
systemd
SysVのようには機能しませんinit
。このコメントの前の部分は、5年または10年前のLinuxディストリビューションを古い学校のinit
セットアップで実行しているふりをしています。) 、XセッションからログアウトしてX11 / GDMを停止すると、特にスワップスペースがない場合、またはデスクトップが「アイドル」のときでも頻繁に起動するがらくたがある場合、リソースが解放されます。
これが特にあなたのシミュレーションに影響を与えるかどうかはわかりませんが、次の可能性があります。
これは、シミュレーションで共有メモリを使用する場合(考えてみてください/dev/shm
)、速度が低下したり、ストレージデバイスが消耗したりする可能性があることを意味します!そして、パフォーマンスのペナルティはいくつかのレイヤーから生じます。
ファイルシステムドライバー
ストレージドライバー
記憶媒体
しかし、これが行われない場合、パフォーマンスはベアメタルUbuntuのパフォーマンスと同様になります(他のI / Oが他の人が言及したように仮定しない)。