WSL1の課題

Microsoftは現在、「WSL (Windows Subsystem for Linux)1」の次のバージョンの開発を続けている。この機能は「WSL2」と呼ばれており、2020年5月に公開が予定されているWindows 10フィーチャーアップデートで利用できるようになる見通しだ。一般的には、2020年6月に一般公開されるフィーチャーアップデートで導入されることになると見られている。

Windows 10で動作しているWSL1

WSL1が比較的成功しているにも関わらずMicrosoftがWSL2の開発に舵を切った本当の理由はわからない。だが、WSL1の問題として挙げられることが多い次の2点を解決するのが1つの目的になっているのではないかと考えられる。

  • WSL1ではLinuxカーネルの全てのシステムコールに対して変換レイヤを実装する必要がある。だが、全てのシステムコールをカバーすること自体が難しい上に、常に開発が続いているLinuxカーネルに対してリアルタイムに対応を続けなければならないという、メンテナンスの困難さがある
  • WSL1はファイルシステムの性能が発揮できない。ある程度の性能改善は行われたが、抜本的な高速化は現在のWindowsの枠組みのままでは難しい


Microsoftは当初、WSL1の仕組みを変えずに問題を解決しようと考えていた節があるのだが、開発を続けた結果、現在の仕組みでは抜本的に上記問題を解決することは難しいと判断したように見受けられる。この辺りの判断が純粋に技術的なものだったのか、製品展開も含めた経営上の判断だったのか、はたまた政治的なものだったのか、公開されている情報だけから判断することは難しい。しかし、技術的な課題が存在していることは確かであり、純粋に経営的/政治的な判断だけだったわけではないように見える。

WSL2のアプローチ

そこでMicrosoftは、WSL1とはまったく異なる仕組みを使うWSL2の開発に取り掛かった。Microsoftは「Hyper-V」というハイパーバイザ技術を保有しており、この技術を使うことでx86-64システムで仮想マシンを実行することができる。WSL2では、これを利用し、Linuxカーネルを仮想環境で実行することでWSL1の問題を解決しようとしている。

WSL1の抱える問題は、WSL2では次のように解消されると言われている。

  • 仮想マシンでLinuxカーネルそのものを動作させるため、システムコール互換性は100%になる。また、Linuxカーネル自体を最新版に置き換えることで最新のシステムコールに対応していくことができるため、メンテナンスが著しく簡単になる。またこの仕組み上、異なるバージョンのLinuxカーネルを同時に利用することもできるようになる
  • Windows側のファイルシステムをLinux側から使うという仕組みと異なり、仮想マシンを使う方法ではファイルシステムのパフォーマンス向上が期待できる。開発段階では最大で20倍の高速化が確認できたとされている


仮想マシンを使う場合、どの程度のリソースを仮想マシンに割り当てるのかが問題になる。仮想コアの数、仮想メモリのサイズ、仮想ディスクのサイズなどだ。WSL2ではこの辺りはWindows 10側が自動的に調整するので、ユーザー側から意識することはない。そのうちユーザー側から設定できるようになるかもしれないが、基本的にはWindows 10側がやることになっている。

それではWSL2にすることで全ての問題が解決するのかと言えば、WSL2にはWSL2の課題がある。仮想マシン内で動作させる仕組みを採用しているため、WSL1よりもWindowsとLinuxの統合感が低くなる。WSL2はできるだけWSL1と同じ体験を提供できるように開発が進められているが、それにはまだまだ調整や新機能の導入が必要といった状態だ。しかし、MicrosoftはWindows 10 Insider Preview版のリリースごとにWSL2の新機能や機能改善を取り込んでおり、積極的に開発を進めている。

活発に開発が進んでいるWSL2

もう1つは、ほかの仮想化技術との衝突だ。WSL2はCPUの提供する仮想化支援機能を利用する。このため、WSL2を使っているとほかの仮想化アプリケーションが利用できないといった状況が起こり得る。またはその逆もありえるだろう。ほかの仮想化アプリケーションが動作している場合、WSL2が利用できない可能性もある。仮想化アプリケーションとWSL2が共存するにはWSL2以外のアプリケーションが特定の仕組みを実装する必要があり、現在その開発が進められている。ユーザーの多い仮想化アプリケーションでは、WSL2のリリースまでにこの機能は実装されることになると見られるが、マイナーなアプリケーションでは対応が間に合わない可能性もあり、注意が必要だ。

さらに、WSL2はWSL1よりもプロセッサ負荷が高くなると言われている。一般的に、WSL1のようなアプローチは、WSL2のアプローチよりもプロセッサ負荷が軽くなる傾向が見られる。つまり、プロセッサを酷使するようなプロセッサバウンダリなソフトウエア(数値計算など)は、WSL2になることで処理が遅くなる可能性がある。Microsoftはファイルシステムパフォーマンスの向上を主張してプロセッサ性能の低下については触れていないが、これまでに行われたベンチマークもこれを示しており、プロセッサ性能が劣化するのも間違いないと考えられる。この辺りはバランスの問題もあるので何とも言えないが、そういった特徴があることは覚えておいても損はないと思う。

WSL1とWSL2は共存する予定

WSL1とWSL2は実現できることは同じところを目指しているものの、それを実現するための技術は全く異なっている。このためか、MicrosoftはWSL2をリリースした後もWSL1をそのまま提供するとしている。WSL1からWSL2へ切り替えることもできるし、WSL1のまま使い続けることもできる。もちろんリリースまでに方針が変わる可能性もあるが、現状ではこれまでの発表の通り、WSL1とWSL2は共存できる状況になるように見える。

2020年6月以降はLinuxの利用がもっと進む可能性

2020年5月、または6月ごろに提供が始まる予定になっているWindows 10フィーチャーアップデート以降は、WSL1よりも多くの機能が利用できるようになる見通しだ。実行するカーネルを切り替えることもできるし、利用開始時にLinuxカーネルにオプションを指定するといったこともできるようになる。Windows 10にLinux専用の仮想マシンが搭載される、これが2020年第3四半期以降のWindows 10ということになるだろう。

自分で仮想環境を用意しなくてもよいというのは、ちょっとした用途でLinuxが使えればよいライトユーザーには嬉しい話だと言える。WSL1でもかなり楽になったが、WSL2でもその手軽さは変わらない。今後、さらにWinodws 10におけるLinuxの利用は増えることになりそうだ。