ベンチマーク測定ツール UnixBenchでWSL1とWSL2を比較測定する
Windows Subsystem for Linux (WSL) とは、Linuxのバイナリ実行ファイルをWindows 10およびWindows Server上で実行できるようにしたものです。
従来のWSL1との違いは、本物のLinuxカーネルを使用し、Linuxカーネルを仮想マシン上で動作させていることとされています。メリットとしては、本物のLinuxカーネルを使用することで互換性が向上し、仮想マシンを使用することでディスクI/O性能が向上したとのことです。
本当でしょうか?
そこで、本稿ではUbuntu20.04上で、UnixBenchを測定してみました。
UnixBenchのインストールと走らせ方はこちらを参照ください。
UnixBenchは、80年代に作られたUNIXベンチマークテストツールです。
複数のテストが実行され、ベースラインシステムのスコアと比較され、計測値が記録されます。また、全テストの実行結果を踏まえた総合的な計測も行います。
現在のPCはマルチCPUシステムが普及していますが、デフォルトではベンチマークテストを1CPUでの計測とマルチCPUでの計測の合計2回実行されます。またグラフィックスのテストも含まれています。
測定環境
H/W:VAIO VPCCB39FJ
CPU:インテル Core i5-2430M プロセッサー
メモリ:PC3-10600 8GB(4GB ×2)
OS:Ubuntu18.04 ストレート(外付けHDDからブート)
WSL2(Windows10上にUbuntu18.04をインストール)
WSL1(Windows10上にUbuntu18.04をインストール)
WSL2は、Windows 10 Insider Previewで実施。正式リリース版では計測値が変動する可能性がある。あくまでも参考値とされたい。
計測日:2020年5月14日
計測結果
single CPU
※ スコアが大きいほど早い。
Test | ストレート | WSL2 | WSL1 |
Dhrystone 2 using register variables | 2804.9 | 2721.5 | 2810.8 |
Double-Precision Whetstone | 887.6 | 868.4 | 898.6 |
Execl Throughput | 826.9 | 576.2 | 19.8 |
File Copy 1024 bufsize 2000 maxblocks | 1226.5 | 1055.4 | 170 |
File Copy 256 bufsize 500 maxblocks | 821.2 | 688.7 | 109.7 |
File Copy 4096 bufsize 8000 maxblocks | 2601.7 | 2320.3 | 354.9 |
Pipe Throughput | 568.3 | 553.9 | 179 |
Pipe-based Context Switching | 353.3 | 36.2 | 105.7 |
Process Creation | 285.6 | 249 | 8.5 |
Shell Scripts (1 concurrent) | 1189.4 | 1482.9 | 56.8 |
Shell Scripts (8 concurrent) | 3182.6 | 2333.9 | 84.8 |
System Call Overhead | 301.7 | 271.1 | 173.2 |
System Benchmarks Index Score: | 916.9 | 685.4 | 137.1 |
multi CPU
Test | ストレート | WSL2 | WSL1 |
Dhrystone 2 using register variables | 6320.1 | 6039.3 | 5526 |
Double-Precision Whetstone | 2889.7 | 2766 | 2655.3 |
Execl Throughput | 2004.1 | 1204.4 | 41.2 |
File Copy 1024 bufsize 2000 maxblocks | 1968.6 | 1443.4 | 296.3 |
File Copy 256 bufsize 500 maxblocks | 1268.2 | 919.8 | 177.9 |
File Copy 4096 bufsize 8000 maxblocks | 4136.3 | 3071.3 | 416.8 |
Pipe Throughput | 1426.2 | 1317.1 | 396.6 |
Pipe-based Context Switching | 777.6 | 751.4 | 406.8 |
Process Creation | 1671.5 | 883.5 | 16.3 |
Shell Scripts (1 concurrent) | 3653.1 | 2618.5 | 96.4 |
Shell Scripts (8 concurrent) | 3587.1 | 2966.1 | 95.6 |
System Call Overhead | 748.8 | 639.8 | 340.4 |
System Benchmarks Index Score: | 2088.2 | 1631.8 | 263 |
ミニ考察
ストレートUbuntu、WSL2、WSL1の順で早い。
index score(各測定値の平均値)がWSL2でストレートの78%、WSL1で13%程度の性能(マルチCPU)。
DhrystoneとWhetstoneではWSL2、WSL1共に健闘しており、ストレートと遜色ない性能。これはMicrosoftのチューニングアップの成果なのか、差の出にくいテスト特性なのかは不明。
DhrystoneとWhetstone以外では、WSL1を大きく引き離して6倍以上、WSL2が早くなっている。
今後、積極的にWSL1を使用するメリットはあまり感じられない。
Hyper-V上にインストールされたUbuntuとWSL2の比較によって、どの程度WSL2が最適化されているかがわかると思われる。興味があるが、本稿では環境が用意できなかった。