WSL2 が定期的に CPU 100% でメモリガバ食いみたいになってしまう問題があり、以前改善策に関するブログを書いた。
Refs: WSL2 が時々 CPU 100% 使っちゃうときは guiApplication=false の設定を入れると改善するかもしれない
しかしそれでもやっぱり WSL2 が暴走状態になってしまうことがあって、しょうがないからタスクキルしたいんだけどタスクマネージャーからの強制終了は受け付けてくれないし、コマンドプロンプトからの wsl2 --shutdown
も応答が返ってこなくて効かないし、もはや PC を再起動するくらいしか打つ手がないかに見えていた。えれー不便。
しかし実は “絶対 WSL2 打ち倒すコマンド” があった。PowerShell を管理者権限で実行し、 taskkill /f /im wslservice.exe
って打てばいいようだ。実際にこのコマンドで “突き刺さった状態の WSL2” が終了してくれた。
Refs: All WSL commands hang (including wsl –shutdown) but WSL is constantly using 30-40% CPU #8529
PowerShell を使って WSL2 ぶっちめたところ
いったんこれを事あるごとに実行することでそこまで不便を強いられる感じではなくなってきた。が、先述の issue も Open のままだし、早いところ根本対処が入って欲しいところではある。
近頃は業務でもプライベートでも WSL2 を使っているのだが、時々 (スリープ明け?) 100% に張り付いたままになってしまうことがある。guiApplication=false という設定を入れると改善する可能性がある。
WSL2 causing high CPU load #7893 - microsoft/WSL という issue が立っていて、2022-12-16 現在、この issue は close されているもののまだ直ってない問題のようだ。
自分の環境でもしばしばこの問題が起きていて、起きるたびにコマンドプロンプトから wsl --shutdown
のようなコマンドを打って WSL2 を強制終了するという、解決ともいえない解決をする日々が続いていた。この現象が発生すると WSL は基本的になんの操作も受け付けなくなってしまうので、ぶち止めるより他にないのである。ちなみに重たいプロセスは一切起動してなくてもこの現象は起こる。Vim しか動かしてなくても起こる。
結構わずらわしくて、こんなことなら VirtualBox に適当な Linux でも入れたほうが幸せだったりするんでは?みたいなことまで考えていた。
で、先の issue には guiApplication=false
をやってみなはれ、っていうコメントが投下されている。やってみたけど効かねえぞっていう返信もあり、まあ自分のところで効いたらラッキーくらいのノリで試してみたところ、どうも改善されたくさい。ありがたい。
具体的には、%userprofile%.wslconfig
というファイルを作って以下の内容を書き込む。WSL2 を再起動すれば設定が適用される。
[wsl2]
guiApplications=false
ちなみに自分はここにさらにメモリの上限を制限する設定を追加している。ほっとくとメモリをガバガバ上限なく食ってしまうという現象 (いわゆるメモリリーク) が起きてしまうんでその対策。こっちの問題も未解決っぽい。
WSL2 自体は結構良い「Linux 体験」だと思っているので、この手の問題が起きてしまうのはちょっと惜しい。今後の改善に期待。
Alpine Linux 上で作業をすることを余儀なくされるケースがあったのだが、git が色々と気に食わない (macOS や自分が普段使いしている Linux と表示が異なるという意味) ことになっていた。
GNU less をインストールすることで解決したのでメモしておく。
Alpine Linux で git を使うと、色々気に食わないことが起こる。
git branch
を実行すると、画面全部を使った pager が起動する (いっぱいブランチがあるときには便利かもしれないが…)。git log
を実行したときに色がつかない。白黒。git diff
みたいなものも色がつかない白黒。less を入れる。
sudo apk add less
これだけで先述の諸々は解決する。git branch
も省スペースな感じで表示されるし、git log
も git diff
も色付きになる。
Alpine Linux に最初から入っている less は、Busybox 由来の less であるらしい。
Refs: https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F
曰く、
The problem is not in git itself or terminal, but in the less command. Busybox’s less doesn’t support -r (--raw-control-chars) and -R (--RAW-CONTROL-CHARS) options.
The simplest (yet not ideal) solution is to install GNU less:
apk add less
ということである。Busybox の less は省機能で作られているってことかしらね。