このページの本文へ

Windows Info 第403回

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

2023年10月29日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回は、前回の記事(「プレビュー版が登場したWSLのVer.2.0 新機能を具体的に見る」)の続きで、Windows Subsystem for Linux(WSL) Ver.2.xの新機能である、自動メモリ回収機能を調べることにする。

 なお、前回WSLのVer.2.0を「WSL V2.0」と表記した。しかし、読者の方を少し混乱させてしまったようだ。そこで、最初に用語を少し整理させていただく。WSL2とWSL Ver.2.0の違いがわかる方は読み飛ばしていただいて構わない。

WSL関連の用語を整理

 WSLに限らず、ソフトウェア製品では、追加機能などを略称で表記することがある。WSLも登場以来さまざまな機能が追加されており、WSLという単語を含む用語が複数ある。

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

 この中でも「WSL2」とは、Linuxカーネルを使う仮想マシン環境でLinuxディストリビューションを実行するものだ。一方でそれ以前からあるWSLは、LinuxカーネルをWindowsカーネルなどでエミュレーションしており、ある程度の互換性を持っているものの、Linux特有の機能の一部を実行することができない。この環境は当初は単にWSLだったが、WSL2の登場によりWSL1と呼ばれるようになった。

 WSL2は、意味的にはWSLの第2世代ということなのだろうが、MicrosoftはこのWSL1とWSL2について「WSLバージョン」と呼んでいる(https://learn.microsoft.com/ja-jp/windows/wsl/about)。というのも、WSLがWindows 10のオプションコンポーネントとして提供されていた初期には、WSLにはバージョン表示機能がなく、Windowsのバージョンで区別されていたからだ。

 Windows 11の登場と同時に、WSLのMicrosoftストアで配布が開始され、ここでWindowsのバージョンとは同期しなくなった。その際にMicrosoftストアで配布されるWSLには、バージョンが付けられ、「wsl.exe -v」で表示できるようになった。

 同時にGitHubでもバイナリの配布が始まった。GitHubでのバージョン表示は、前記のコマンドで出てくるものである。強いて言えば、これはWSLのリリースバージョンである。現在たまたま「2.0.x」となっているだけで、WSL2とは直接は関係ない。

 なお、Microsoftでは、WSL Ver.2.0のことを「September 2023 update」と呼んでいる。しかし実際には、WSL Ver.2.0の新機能は、現時点でプレビュー状態であり安定版WSLでは利用できない。おそらく、WSL1/WSL2で「バージョン」という表記を使ってしまったため、WSL Ver.2.0.6などとは表記しにくいのであろう。

WSL Ver.2.0で新搭載された自動メモリ回収

 WSL V.2.0.0で搭載された自動メモリ回収(Automatic Memory Reclaim)は、Linuxのキャッシュメモリを解放する機能だ。Linuxカーネルは、空きメモリがあれば、積極的にファイルキャッシュなどに利用する。このため稼働中は、空きメモリがほとんどない状態となる。

 ただし、プログラム自体やプログラムが要求して利用するデータ領域などが必要になれば、解放可能なキャッシュを充当する。このため、Linuxの実行環境だけをみれば、空きメモリがないことは特に問題ではない。

 しかし、仮想環境としてみた場合、使っていないメモリを解放してホスト側で利用できれば、ホスト側での負荷が小さくなる。これまでもWSLには、仮想環境に対して動的にメモリ割り当てをし、空きメモリがあれば、これを解放する設定「pageReporting」が、WSL全体を設定する「.wslconfig」にあった。しかし、前述の理由により、WSLでファイルを多用すると、キャッシュが割り当てられてしまい、空きメモリが少なく、解放できるメモリが減ってしまう。

 今回の自動メモリ回収は、LinuxカーネルのControl Groups(Cgroups)という機能を使う。これは、プロセスのグループに対して、リソース割り当てを制御・隔離するための機能で、コンテナー技術などでの利用されている。

 Cgroupsには、2007年にカーネルに統合されたV1と、2016年にリリースされたV2がある。この2つには完全な互換性がなく、V1を前提に動作している場合に、必ずしもV2で動作させられるとは限らない。このため、多くのLinuxカーネルではV1とV2を併用している。

 なお、最新のWSL Ver.2.0.6では、新機能のうち「networkingMode」などいくつかが実験的機能ではなくなった。しかし、自動メモリ回収に関しては、まだ、実験的機能のままになっている。とはいえ、どの新機能もプレビュー版の機能であり、ある程度のリスクは残る。自動メモリ回収に関しては、Cgroups V1に依存するプログラムの互換性問題などが残り、まだどうなるのかが見えないので実験的機能のままなのであろう。

自動メモリ回収の実際

 ここでは「.wslconfig」を編集し、自動メモリ回収を動作させてみた結果を報告する。Beta Channelのプレビュー版Windows 11 Ver.23H2(OSビルド22635.2486)で、Ubuntu(22.04.3 LTS)を使って評価をしている。現行のWindows 11 Ver.22H2では、自動メモリ回収は正しく動作しないようである。

 まずは、自動メモリ回収を有効にしない、標準の状態を調べる。「.wslconfig」で「autoMemoryReclaim=disabled」を指定するか、もしくは何も設定しないと、自動メモリ回収は動作しない。

 Cgroupsの状態は、/etc/mtabで調べることができる。Ubuntu 22.04では、Cgroups V1(mtab内ではcgroup)とCgroups V2(同cgroup2)の両方が、/sysディレクトリにマウントされている。

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

自動メモリ回収を有効にしていないとき、/sysには、cgroup2(Cgroups V2)とcgroup(Cgroups V1)がマウントされている。また、/sys/fs/cgroupには、memory.reclaimが存在しない

 また、このとき、/sys/fs/cgroupディレクトリには、memory.reclaimは存在していない。なお、/sysは、カーネルの機能などを扱うための疑似ファイルシステムで、機能状態の取得・設定をファイルの読み書きでできる。

 キャッシュの状態は、freeコマンドで調べることが可能。「free -h」とすると、単位をつけて表示される。また、「free -h -s 300」とすると、300秒(5分)ごとに、コマンドを繰り返し実行する。

 ddコマンドを使い、ファイルの書き込みを行うとキャッシュが利用される。

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

ファイル書き込み前は、キャッシュ(buff/cache欄)は、324MBだったが、ddコマンドでファイルを書き込むと、851MBまで上昇する。その後5分間隔でメモリ状態を表示させても、キャッシュは変化しない

 直後のfreeコマンドでは、キャッシュ領域が大きくなっていることがわかる。その後、300秒ごとにfreeコマンドを実行しても、キャッシュ領域はほとんど変化していない(Linuxのシステムサービスなどでファイルを読み書きするため、多少の変動はある)。

 設定値を「gradual」とすると、Cgroups V1が禁止され、Cgroups V2のみが有効になる。これは、自動的に行われ、/sysにはCgroups V2(cgroup2)のみがマウントされる。また、/sys/fs/cgroup/memory.reclaimが有効になる。このファイルに回収させたいメモリ量を書き込むと、キャッシュメモリなど解放可能なメモリが空き状態になる。

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

自動メモリ回収を「autoMemoryReclaim=gradual」とすると、Cgroups V2(cgroup2)のみが/sysにマウントされるようになる。このとき、/sys/fs/cgroupには、memory.reclaimが存在するようになる。ファイルを書き込んだのち5分間隔でメモリ量を測定するとキャッシュが段階的に減っていく

 起動直後には、557MBだったが、ddコマンドでファイルを書き込むと1.1GBまでキャッシュが増えた。「gradual」では5分のアイドル時間が検出されると、段階的にキャッシュを減らしていく。5分単位でfreeコマンドを実行(free -h -s 300)していくと、キャッシュが段階的に減っていく。

 段階的に減らしていくのは、キャッシュが再び利用される可能性があること、Linuxでは遅延書き込みがあるため、時間が経過すると、解放可能なキャッシュ領域が増えるからだ。

 これに対して、設定値が「dropcache」の場合、Cgroups V1はそのままで、ディストリビューションの標準状態となる。このときには、Cgroups V2は使われず、/proc/sys/vm/drop_cachesなどが利用される。動作としては、5分のアイドル時間が検出されると解放可能なキャッシュをすべて解放する。

WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す

自動メモリ回収をdropcacheにすると、ファイルを書き込んだのち、5分間のアイドル時間が経過すると、キャッシュが大きく減少し、ほぼ初期状態に戻る

 「gradual」に比べると、少し乱暴な方法だが、Cgroups V1の動作を禁止しないというメリットがある。ディストリビューションのCgroupsの標準状態を変更しないため、Cgroups V1に依存するアプリケーションに影響を与えない。

 自動メモリ回収には、なかなか減りにくいWSLのメモリ利用量を下げる働きがある。実測してみると、確かに効果はあった。WSL側で大きなファイルを多数扱うため、Win32側への負荷が大きい場合に有効そうだ。

カテゴリートップへ

この連載の記事
1
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
2
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979
3
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
¥134,377
4
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥39,800
5
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
¥296,323

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥699
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
¥880

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン