純粋なUbuntuとWindowsのUbuntu(WSL)でのシミュレーションの実行


15

次の2つの状況で、同じコンピューターで大規模なCAEシミュレーションをテストすることについて質問したいと思います。

  1. 純粋なUbuntuシステム
  2. Windows 10(WSL)のUbuntuシステム

両方の場合の計算速度はほぼ同じですか、または異なりますか?


4
シミュレーションの性質を知らないと、これに答えることは不可能です。
ムール

1
@muru:そうではありませんという漠然としました。「シミュレーション」は、おそらく計算集中型のバックグラウンドジョブであり、CPUまたはメモリにバインドされます。(ディスクまたはネットワークI / Oもボトルネックになる可能性がありますが、このようなプログラムを作成する人は避ける傾向があり、最新のシミュレーションコードの中にはGPUを使用して並列計算を行うものもあります。)これら2つから5つのすべての可能なボトルネックをテストし、それらのいずれかについてWSLとネイティブUbuntuの間に大きな違いがあるかどうかを確認します。やりますが、WSL(またはWindows 10)がありません。
イルマリカロネン

3
@IlmariKaronen「おそらく」。CPUがバウンドしたとしても、データの処理能力に応じて、IOを集中的に使用する可能性があります。そして、あなたのコメントの残りは、これを閉じるためのかなりの理由です-ここでボトルネックの可能な組み合わせが重要であるかどうかはわかりません。
ムル

1
さて、適切なベンチマークがすでにオンラインになっていることが判明したため、回答を投稿しました。明らかに、OPの特定のシミュレーションコードがWSLでより遅く実行されるかどうかを確実に言うことはできません。しかし、いずれにせよ、その質問に対する答えは、とにかくOP以外の誰にも役に立たない。ベンチマークに基づいて答えられるのは、どのタイプのシミュレーションコードがWSLとネイティブLinuxの間にパフォーマンスの違いがあると合理的に予想できるかということです。
イルマリカロネン

@muru、それはCAEシミュレーション(Abaqus CAE)です。
ABCDEMMM

回答:


18

シミュレーションソフトウェアは、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 // popcntglibcとカーネルに測定可能な違いをもたらすものは何でも(カーネルが勝ちました。ただし、ソフトウェアRAID5 / 6エラー修正データなどの特定のコードを除き、カーネルはFPUレジスタにアクセスすることを避けるため、AVXの恩恵は受けません。)
Peter Cordes、

12

WindowsのUbuntu(WSL-2017 Fall Creators Update)は、Linux環境の「純粋な」Ubuntuよりも明らかに遅いです。

たとえば、Windows 10ではスクリーンペインティングにUbuntu 16.04と比べて何倍も時間がかかります。つまり、Windows 10ではカーソルが実際に移動するのを見ることができます。

WSL bash startup.gif

WSL Bashスプラッシュスクリーンのペイントには約5秒かかります。比較すると、Ubuntu 16.04の同じスプラッシュスクリーンの場合、約1 1/2秒です。

Ubuntuターミナルのsplash.gif


CPUベンチマーク

最初のセクションでは、画面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秒かかりました。

Linux上のUbuntu 16.04

$ 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

Windows 10ビルド1709上のUbuntu 16.04

$ 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

Windows 10ビルド1803上のUbuntu 16.04

$ 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と同等です。


8
これは誤解を招くことに注意してください-これはI / Oパフォーマンスと他の計算パフォーマンスを区別しません。WSLはI / Oが遅いことが知られています(例えば、Phoronixベンチマークを参照)。それはOPの計算がWSLで同じくらい速くできるかどうかについては何も言っていません。
ムル

6
どちらの場合でも、スプラッシュスクリーンの描画が効果的に瞬時に行われないことに正直驚いています。お使いのコンピューターは、ビデオを再生するときなど、数ミリ秒ではるかに複雑な画面更新を(おそらく)喜んで行います。そして、最初の記録時と同じくらい遅い端末を最後に見たのは、2400 bpsモデムでBBSをダイヤルする90年代前半でした。
イルマリカロネン

「LinuxのUbuntu」とはどういう意味ですか?
ジョンベントレー

3
正直なところ、この種のベンチマークは、本質的にコンソールの描画速度を測定するベンチマークとして、あらゆる種類の現実的なプログラムにはまったく役に立ちません。プログラムのボトルネックがコンソールI / O(ほとんどのターミナルエミュレーターを搭載したLinuxでも遅いことで有名です)か、これが有用な手段の信頼できる尺度ではありません。
マッテオイタリア

2
@ WinEunuuchs2Unix私が見ることができることから、ほとんど計算はありません。しかし、多くのI / O:どこかから天気を取得し、日付と時刻を読み取り、形式で印刷し、システム情報を読み取ります。とにかく、Abaqusを使用したことがありますか?シミュレーションを強制しない限り、それまたはAnsysまたはSimulinkのようなシミュレーションソフトウェアは、実際のシミュレーションを実行するときにスクリーンI / Oバウンドではありません。これらは、行われたシミュレーションに応じて最終結果を表示することは完全に可能です。
ムル

7

それについて考えてみてください-WSLでは、コンピューターは完全なグラフィカルWindowsシステム(そもそも恐ろしいリソースの大量消費)とUbuntuサブシステムを実行しています。ネイティブUbuntuでは、Ubuntuのみが実行されます。


1
@JimDeadlock私は本当にデスクトップを殺すとは思わない、ただそれを表示しない。すべてのGUIアプリはまだバックグラウンドで実行されていますよね?
エリックドゥミニル

2
Windows GUIはメモリをいくらか消費しますが、何もしないときのCPU使用量はあまり多くありません。なぜそれが大きな影響を与えるのかわかりませんか?
vidarlo

1
コンソールを別のVTに切り替えても、プロセスは強制終了されません。@EricDuminilは正しいです。Xサーバーはもはや表示されていないことを知っているため、CPU時間を使用してグラフィックの更新を一時停止する場合があります(したがって、OpenGL処理などに時間を浪費することはありません)。しかし、pstreeまたはを実行するとps auxw、すべてのプロセスがまだ生きていることは明らかです。(またはtop、Mを押してメモリ消費量でソートします)。
ピーター

2
@MichaelEricOberlin:別のVTに変更してもランレベルには影響しません!GDMを起動するランレベルでテキストコンソールがまだ利用可能であるというだけです。(ところで、ランレベルは基本的に過去のものであり、systemdSysVのようには機能しませんinit。このコメントの前の部分は、5年または10年前のLinuxディストリビューションを古い学校のinitセットアップで実行しているふりをしています。) 、XセッションからログアウトしてX11 / GDMを停止すると、特にスワップスペースがない場合、またはデスクトップが「アイドル」のときでも頻繁に起動するがらくたがある場合、リソースが解放されます。
ピーター

1
@MichaelEricOberlin:コメントはまったく間違っています。削除を検討してください。
エリックドゥミニル

1

これが特にあなたのシミュレーションに影響を与えるかどうかはわかりませんが、次の可能性があります。

WSLは共有メモリにRAMを使用しません!ディスクを使用します!

これは、シミュレーションで共有メモリを使用する場合(考えてみてください/dev/shm)、速度が低下したり、ストレージデバイスが消耗したりする可能性があることを意味します!そして、パフォーマンスのペナルティはいくつかのレイヤーから生じます。

  • ファイルシステムドライバー

  • ストレージドライバー

  • 記憶媒体

しかし、これが行われない場合、パフォーマンスはベアメタルUbuntuのパフォーマンスと同様になります(他のI / Oが他の人が言及したように仮定しない)。


知って本当によかった!
ABCDEMMM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.