概要
Windows Subsystem for Linux(WSL)の計算速度は仮想化環境より速いのか?
WSL環境とVirtualBox環境(以下、VB)で
OpenFOAM v1806のチュートリアルの計算速度を比較した
環境
PC : SurfaceBook
OS : Windows10 pro
CPU : intel core-i7-6600U
メモリ : 16GByte
WSL
Linux : Ubuntu16.04.4 LTS (Xenial Xerus)
VB
VirtualBoxのバージョン : 5.2.18 r1243419
Linux : Linux Mint 18 (Sarah)
OpenFOAM : 両環境ともにOpenFOAM v1806
対象のチュートリアル
あまり計算時間がかからないモデルでサクサク測定したいので
TJunctionを対象とする
TJunctionについてはこちらのサイトが非常に参考になる
https://www.xsim.info/articles/OpenFOAM/tutorials/incompressible-pimpleFoam-TJunction.html
結果的にTJunctionでは差が出なかったので
以下のとてもためになるサイトのbuoyantCavityも実行
https://www.xsim.info/articles/OpenFOAM/tutorials/heatTransfer-buoyantSimpleFoam-buoyantCavity.html
ともにシングルコアしか使わない
測定
計算時間はExecutiontimeとClockTimeを確認した
前者はCPUの実行時間、後者は実経過時間らしい
引用URL
http://ofbkansai.sakura.ne.jp/executiontime%E3%81%A8clocktime%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6openfoam
メッシュの生成時間は含めていない
結果
TJunction
WSL ExecutionTime = 31.02 s ClockTime = 131 s
VB ExecutionTime = 31.02 s ClockTime = 131 s
差が出なかった
実行時間と実経過時間の間で100sec近く何をしているか不明
buoyantCavity
WSL ExecutionTime = 227.98 s ClockTime = 232 s
VB ExecutionTime = 260.54 s ClockTime = 261 s
差が出た
実行時間と実経過時間で1~5secしか差がない
buoyant~ソルバの特徴なのか?
ここら辺何も分からない
結果としては10数%程度WSLが速い
所感
並列数を増やせばさらに差が出てくるのか?
ソースをコンパイルしなおした後なら速くなるのか?
また時間があるときに試してみたい
ただ私は計算時間がかかるケースを流すことは稀だし
でかいケースを流す場合はクラウドでも借りようかと思っているため
とりあえず個人的に満足できる結果が得られた
蛇足 - パフォーマンスを抑えて実行
以下では、コンセントが確保できなかったので電源を抜いた状態で試してしまい電源モードが「推奨」となっていた状態の結果を示す
buoyantCavity
WSL ExecutionTime = 452.56 s ClockTime = 481 s
VB ExecutionTime = 467.73 s ClockTime = 468 s
ともに電源確保出来た時の2倍近くかかっているしClockTimeはWSLのほうが遅い
こうなると前述の10数%の差より、こういう所が大きく影響しているケースもあるのかもしれない
logを表示しないことで計算速度が数%上がると聞いたこともあるし
ちょっとした計算時間の差より
コマンドを打つのを省略したり効率良く作業したり
掃除はルンバに任せたりした方が絶対に良いと思う
背景
とあるオープンCAEのサマースクールに参加した際に
「WSLって速いの?」と聞かれた際に
「仮想化環境よりは速いらしいですよ」と答えてしまい
そのあと不安になったのが背景。
答えとしては
「TJunctionでは差がないけど、BuoyantCavityでは10数%程度速かったです」
と回答できれば過去の私は良かったと思う。
質問した方に届けば嬉しい。