WSL2の「npm install」の速度改善
その1「ネームサーバーの変更」
npm installで固まる問題があり、それの解決のため
の情報を参考にした。wsl.confに
[network]
generateResolvConf = false
を追加した
/etc/resolv.conf
が
/mnt/wsl/resolv.conf
のシンボリックリンクだったため
シンボリックリンクとしての、/etc/resolv.conf を一旦削除したうえで
実ファイルとして、
/etc/resolv.conf
の中身を
nameserver 8.8.8.8
nameserver 8.8.4.4
とした。
これで、npm install は固まらなくなった
なお、ネームサーバーの
nameserver 8.8.8.8
nameserver 8.8.4.4
は、GoogleのDNSを使う方法のようだ。
これでどうして固まる問題が解消したかの詳細までは不明でござる
★★★
<追記>最近は、
nameserver 1.1.1.1
nameserver 1.0.0.1
のclaude flareのDNSも試している
を参照のこと。
その2「Large Send Offload Version」を「Disabled」
参考)
Hyper-Vそのものは、WSL2以外でも使う仮想化技術
Hyper-VをWSL2以外のもので使うケースでは、LSOがEnabledのほうが高速であることが多いため
Hyper-Vでのデフォルト値はEnabledになってるらしい
しかし、
Hyper-VをWSL2で使う場合は、LSOがEnabledだと逆に遅延の原因になるらしい
私は、Hyper-VをWSL2でしか使わないため
LSOをDisabledにしたほうがよい。
そのため、対処したのが、下記のとおり
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS C:\Users\USER> Get-NetIPConfiguration -InterfaceAlias "vEthernet (WSL)"
InterfaceAlias : vEthernet (WSL)
InterfaceIndex : 26
InterfaceDescription : Hyper-V Virtual Ethernet Adapter
IPv4Address : 172.30.112.1
IPv6DefaultGateway :
IPv4DefaultGateway :
DNSServer : fec0:0:0:ffff::1
fec0:0:0:ffff::2
fec0:0:0:ffff::3
PS C:\Users\USER> Get-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" | Where-Object DisplayName -Match "Large Send Offload"
Name DisplayName DisplayValue RegistryKeyword RegistryValue
---- ----------- ------------ --------------- -------------
vEthernet (WSL) Large Send Offload Version ... Enabled *LsoV2IPv4 {1}
vEthernet (WSL) Large Send Offload Version ... Enabled *LsoV2IPv6 {1}
で、Large Send Offload VersionがEnabledになってたら、Disabledにする
下記は、管理者権限でPowerShellを起動して行う
PS C:\Users\USER>
PS C:\Users\USER> Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Disabled"
PS C:\Users\USER> Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Disabled"
PS C:\Users\USER> Get-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" | Where-Object DisplayName -Match "Large Send Offload"
Name DisplayName DisplayValue RegistryKeyword RegistryValue
---- ----------- ------------ --------------- -------------
vEthernet (WSL) Large Send Offload Version ... Disabled *LsoV2IPv4 {0}
vEthernet (WSL) Large Send Offload Version ... Disabled *LsoV2IPv6 {0}
PS C:\Users\USER>
その3「高速スタートアップを無効」
コントロール パネル\ハードウェアとサウンド\電源オプション
で、
電源ボタンの動作を選択する
高速スタートアップを有効にする
にチェックがあったら、
チェックを外す
高速スタートアップ機能は、WSL2の動作に影響を与える可能性があるとのこと
高速スタートアップを無効にしてPC再起動
Discussion