WindowsやMacを使用していると、何も意識しなくてもOSが電源制御をしてくれて、
ノートPCのバッテリーの減りがかなり緩やかになるという恩恵を受けます。
おかげで、スリープで数日間経ってもほとんどバッテリーを消費しなかったりしますね。
ところが、Linux(特に標準で省電力機能が無いディストロ)では、
電源の制御を正しく設定しないとあっというまにバッテリーがなくなってしまいます。
下の記事で購入したThinkPad+Archも同様です。
tlpの導入やpowertopのオートチューンでほとんどの症状は改善できます。
しかし、スリープ時に大きくバッテリーを消耗することに気が付きました。
S3 Deep(AWSの話ではない)に入ってくれれば問題ないはずなのですが、
/sys/power/mem_sleepの結果を見ると、[s2idle]のみ表示されています。
UEFIの設定変更でS3を利用できるらしいので試したところ、
スリープの復帰にキーボードやマウス、蓋の開閉が利用できず、
さらには復帰後にトラックパッドが操作不可能になってしまいました。
仕方ないので、s2idle(正確にはS0ixステート)で省電力になる設定を調べることに。
まずはNVMeの設定。どうやらこれがうまく制御できず、S0ixに入れないことがあるようです。
これは/etc/modprobe.d/nvme.confに以下の記述を追加して対応。
options nvme_core.default_ps_max_latency_us=5500
次にiGPU(i915ドライバ)の設定。これもスリープに影響があるようです。
GRUBのパラメータを弄るのですが、その他諸々の設定込み(USB等の節電設定)で最終系はこんな感じ
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash \
i915.enable_psr=2 i915.enable_guc=2 i915.enable_fbc=1 i915.enable_dc=4 \
pcie_aspm=force processor.max_cstate=10 usbcore.autosuspend=3"
ここまでやってようやくスリープ時の消費が1%/h程度になりました。
常用レベルにするまでにここまで設定が必要とは、やはり初心者には向かないですね。
ThinkPadのファーストオーナーはエンジニアで、
セカンドオーナーがLinux入れるヲタク、というネタ画像を見て
またLinux遊びをしたくなってしまいました。
そして気づけば手元にはPCコンフルで購入したThinkPad X13 Gen3が...
i5に16GB/256GBで60000円とまあ良いお値段がするのにまた衝動買い。
さらには交換用のUSキーボードで総額70000円に。
ここまでくると、例のE14を新品で買ったほうが良かったような気もしますが、
私は子供の頃からの生粋のXシリーズユーザなので候補には上がりませんでした。
購入後すぐにLinuxをインストール。もちろんArch Linuxです。
そしてなんだか最近のはやりはi3やらSwayやらのタイル型WMのようなので、
今回はHyprlandを選択。見た目の割にメモリ1.5GBくらいで動作する優秀な子です。
いろいろ設定を済ませてできあがったデスクトップがこちら。
ええ、ヲタクですね。
あとは開発用の環境をいろいろ整備したら本格的に運用していこうと思います。
Chromium系のアプリ(Electron含む)とHyprlandで動くfcitxの相性が酷く、
VSCodeがまともに使えないのをなんとかしないといけないですね。。。