WSL 2のWindowsファイルアクセスが高速化 ~ virtiofsのDMAプール最適化が解消した最後のボトルネック ~
WSL 2(Windows Subsystem for Linux 2)を使っていて、“/mnt/c/” 上のソースコードをLinux側でビルドしたり、“npm install” や “cargo build” を走らせると処理が重くなる経験がある人は少なくありません。これはWindowsとLinuxのファイルシステム境界を越えるI/Oがボトルネックになっているためです。
2026年5月、そのボトルネックを根本的に緩和する変更がWSL 2カーネルに取り込まれました。Hayden Barnes氏が報告したPR #40654による、virtiofsへの専用DMAプール割り当てがそれです。
目次
virtiofsとは
WSL 2がWindowsのファイルシステム(DrvFs)にアクセスする現行の標準プロトコルは Plan 9 です。ネットワークファイルシステムに近いアプローチで、64KBのメッセージサイズ制限があり、小さなファイル操作でも毎回シリアライゼーションのオーバーヘッドが発生します。
virtiofs はこれに代わる方式で、VirtIOトランスポートを使った共有メモリベースのファイルアクセスです。カーネルとホスト間でデータをコピーせず共有メモリ経由で渡すため、Plan 9に比べてオーバーヘッドが小さくなっています。
2026年5月の変更:専用DMAプール
PR #40654以前のvirtiofsには、もう一つの問題がありました。
WSL 2セッション内のすべてのvirtioデバイス――“/mnt/c/” のマウント、“/mnt/d/” のマウント、virtioネットワークアダプタ――が一つのグローバルDMAバッファプールを共有していました。I/Oが重なるとデバイス同士がバッファを奪い合い、スループットが落ちます。これがvirtiofsに残っていた最後の大きなボトルネックでした。
変更後は、各virtioデバイスが専用のDMAプールを持ちます。カーネル起動時に4GB未満の連続物理メモリ範囲がデバイスごとに割り当てられ、sysfsで公開されます。これによりデバイス間のバッファ競合がなくなり、“/mnt/c/” への書き込みがネットワーク通信に引きずられることもなくなります。
恩恵を受けるのは誰か
この改善が効くのは、WSL 2からWindowsファイルシステム(“/mnt/c/” など)を直接操作するワークフローです。
- Windowsのホームディレクトリ以下にソースコードを置いてLinux側でビルドする
- “/mnt/c/” 上のNode.jsプロジェクトで “npm install” を実行する
- “/mnt/c/” 上のRustクレートで “cargo build” を走らせる
WSL 2のLinux側ファイルシステム(”~/” 以下)だけを使う場合は今回の変更の対象外です。しかし「Windowsのエクスプローラーからも触れる場所にファイルを置きたい」という実用的なユースケースでは、体感できるレベルの改善が期待できます。
有効化手順
この最適化はvirtiofsを利用している場合にのみ適用されます。virtiofsはまだデフォルトではなく、標準は引き続きPlan 9のため、以下の手順で明示的に有効化します。
必要要件
| 項目 | バージョン |
|---|---|
| WSL Kernel | 6.18.26.3-1 以降 |
| WSL 2 DeviceHost | 1.2.29-0 以降 |
| RAM | 1GB以上(SWIOTLBに最低64MB必要) |
設定手順
1. カーネルを更新する
管理者権限のPowerShellまたはコマンドプロンプトで実行します:
wsl.exe --update --pre-release
2. “.wslconfig” を編集する
“%UserProfile%.wslconfig”(例:“C:\Users\ユーザー名.wslconfig”)を開き、“[wsl2]” セクションに以下を追加します:
[wsl2]
virtiofs=true
ファイルが存在しない場合は新規作成してください。
3. WSL 2を再起動する
wsl.exe --shutdown
wsl
以上でvirtiofsが有効化され、新しいDMAプール最適化も適用されます。
まとめ
2026年5月にWSL 2カーネルへ取り込まれたPR #40654は、virtiofsに残っていた最後の大きなボトルネック(全デバイス共有DMAプール)を解消した。“/mnt/c/” 上のファイル操作が重いと感じていたなら、virtiofs有効化を試す価値は十分あります。
詳細はHayden Barnes氏の原典記事「WSL 2 is getting faster Windows file system access」をご参照ください。