Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

wsl

WSL2のLinuxメモリ量固定

WSL2は本物のLinuxカーネルが動くという性質上、大量のディスク読み書きなどすると大量にキャッシュとしてメモリが消費されてしまい、ホストのメモリを食いつぶしてしまいます。ホストにあまりメモリが積まれておらずホストが激重になってしまいましたので、WSL2のメモリ量を固定してみました。

Windows10のエクスプローラーで、%USERPROFILE% を開き、.wslconfig というファイルがなければテキストファイルとして新規にファイル作成し、以下を書き込みます。

[wsl2]
memory=4GB
swap=2GB

上記は、メモリを4GBに固定し、スワップに2Gを設定しています。ホストのメモリ量に応じて適宜変更してください。

変更後、WSL2 を再起動する必要があります。

コマンドプロンプトを管理者権限で開きWSL2を停止します。

C:> wsl --shutdown

再度、WSL2を起動(Ubuntu等のアイコンをクリック)し、Linuxのコマンドラインで以下を実行し、メモリ量やスワップの量が指定した値になっているかを確認します。

$ cat /proc/meminfo
MemTotal: 4028424 kB
MemFree: 3950724 kB
MemAvailable: 3847712 kB
Buffers: 5748 kB
Cached: 8576 kB
SwapCached: 0 kB
Active: 12532 kB
Inactive: 3752 kB
Active(anon): 2012 kB
Inactive(anon): 8 kB
Active(file): 10520 kB
Inactive(file): 3744 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097152 kB
SwapFree: 2097152 kB
Dirty: 48 kB
Writeback: 0 kB
AnonPages: 2060 kB
Mapped: 4100 kB
Shmem: 68 kB
Slab: 21744 kB
SReclaimable: 11912 kB
SUnreclaim: 9832 kB
KernelStack: 1480 kB
PageTables: 108 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4111364 kB
Committed_AS: 3108 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 944 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 15360 kB
DirectMap2M: 4177920 kB

参考 : https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config

WSL2を使って本物のLinux環境をWindowsで使う

Windowsには、WSL (Windows Subsystem for Linux)というLinux互換機能が随分前から実装されていましたが、これはLinuxの全機能が使えるわけではなく様々な制限がありました。そのため、低レイヤーにアクセスするDockerのようなコンテナ機能や各種ネットワーク制御系アプリケーション等が動作せず使い勝手の悪いものでした。しかし、WSL2はHyper-Vを使った仮想マシン上でLinuxの本物のカーネルが動くため、これら制約がなくなりましたので早速使ってみます。

管理者としてコマンドプロンプトを開き、WSL2を有効化します。

> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.572
イメージのバージョン: 10.0.19042.630
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

仮想マシンを有効化します。

> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.572
イメージのバージョン: 10.0.19042.630
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

一旦Windowsを再起動します。

再起動完了したら、コントロールパネルから「プログラムと機能」を開き、「Windowsの機能の有効化または無効化」の画面で、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」にチェックを入れます。

PowerShellを管理者として開きWSL2をデフォルトに設定します。

> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

Microsoft Storeを開き、Linuxをインストールします。今回は Ubuntu 20.04 をインストール(入手)しました。ダウンロードサイズは444.5MBでした。

ダウンロードが終わると「起動」というボタンが表示されるので起動します。

初めての起動時は、このようにInstalling ・・という表示が出力されます。その後、ユーザ名やパスワードを聞かれるので適宜設定してください。

UbuntuがWSL2上で動いているかどうかは、PowerShell上で以下のコマンドを使って確認できます。VERSIONが2ならOKです。

> wsl --list --verbose
NAME STATE VERSION
Ubuntu-20.04 Running 2

あとは、Ubuntuの世界の話なので、sudo 使って適宜アップデートなりパッケージインストールをしましょう。

このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ