いつも忙しい極楽はぜは、お正月の飲み食いで多忙中にもかかわらず、オールド PC の HDD を SSD へ交換などをしていました。交換はうまくいったのですが、何故かプチフリーズが発生、色んなことをやってみましたので、簡単なメモにしてみました。
こんな SSD を通販で安く購入したまでは良かったのですが、あの伝説のプチフリーズが発生、アクセススピードは上がったのに「プチフリーズ」が多発し、使いにくいことにビックリ。何とかしようとするのが今回の目的です。
なお、これからの作業は Sparky Linux 5.9-OpenBox 版を使用して行いましたが、OS の環境によってプチフリーズの発生頻度に大きな違いがあるようです。この辺の検証は後日やりたいと思っていますが、客観的な指標がないのが玉に瑕です。
ここでプチフリーズについて確認しておきます。このブログの中ではこんな意味で使っています。
「主に SSD が一時的にフリーズしてしまい、数秒間固まってしまい動かなくなることです」
得意のグーグル先生に聞いたところ、原因は SSD の電源管理にあるようだということが分かりました。大きく分けると2つの問題点があり、これを解消するのが解決への近道のようでした。
1. コントローラー側の問題であり、「JMF602」というコントローラを搭載しているSSDに多く見られる。
2. LPM(Link Power Management)」に起因するもので、簡単に言えば省電力機能が原因となっている。
調べてみると今回のコントローラは「SandForce:SF-2281」というものらしく、幸いなことに該当製品ではなく、結局、「LPM」という電源管理機能が犯人らしいというところまで絞れました。
そこで、今回やることです。
1. TLP を導入
2. 電源管理を再設定
参考サイトを調べてみましたが、Windows 関係の解決方法は多いのですが、Linux の具体的なアレコレを教えてくれるサイトはあまりありませんでした。そこで極楽はぜの無い知恵を絞り、以前から愛用している「TLP」を使用してなんとかしてやろうという結論に至りました。
TLP は Linux の高度な電源管理なのですが、本家サイトにはこんなことが書いてあります。
「 TLP には、バッテリー寿命に最適化されたデフォルト設定が付属しているため、インストールして、あとは忘れてもかまいません。それでも、TLP は高度にカスタマイズしています」
要は、インストールするだけでバッテリーが長持ちするようになるという美味しいもので、極楽はぜのオールドモバイル PC でも、実際、バッテリーの使用時間が二〜三割伸びています。
「TLP」はインストール方法も簡単で、Synaptic からインストールし、再起動するだけで使用可能となります。ただ、本格的な設定方法はやや高度で、多くの設定項目があり、ファイルを直接書換えないといけません。
/etc/default/tlp
でも、心配いりません。親切な人がいて gui 版を開発してくれていました。公式サイトは Github にあります。実行方法はスリーステップです。もちろん、TLP がインストール済なのが前提です。
1. ZIP ファイルをダウンロードして解凍する
2. ターミナルを開きフォルダーに移動する
3. ターミナルで: python3 -m tlpui を実行する
設定画面が開きました。インストールするのではなく、フォルダ内にあるアプリを実行するだけです。
TLPUI
今回設定した項目はこれです。設定したといってもチェックを外しただけです。
◎ AHCI Link Power Management (ALPM)
ホストコントローラー AHCI の電源管理
「TLP」の詳細マニュアルはここにあります。
ここで、簡単に「TLP」のおさらいをしておきます。使用方法については設定画面にもありますが、マニュアルには詳細な設定方法があり、推奨設定と合わせて一読する価値があります。
「ディスクとコントローラー」項目の設定済の推奨設定の一例です。実際、インストールしただけで SSD 関係はこのように設定されていました。
[ Disks and Controllers ]
1. Device Assignment
・DISK_DEVICES="nvme0n1 sda"
2. Advanced Power Management (APM)
・DISK_APM_LEVEL_ON_AC="254 254"
・DISK_APM_LEVEL_ON_BAT="128 128"
3. Spin Down
・DISK_SPINDOWN_TIMEOUT_ON_AC="0 0"
・DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"
4. Disk I/O Scheduler
・DISK_IOSCHED="mq-deadline mq-deadline"
5. AHCI Link Power Management (ALPM)
・SATA_LINKPWR_ON_AC="med_power_with_dipm max_performance"
・SATA_LINKPWR_ON_BAT="med_power_with_dipm min_power"
6. BLACKLIST
・SATA_LINKPWR_BLACKLIST="host1"
以下が先達のアドバイスを参考にした今回の設定例です。ALPM の設定項目を実際に設定した例で、AC と BAT それぞれのチェック項目を外し、File 項目で Save、Reload しました。
◎ AHCI Link Power Management (ALPM)
ホストコントローラー AHCI の電源管理
元々の「TLP」の /etc/default/tlp の設定画面です。上記で設定した項目を確認してみますと、該当部分がコメアウトされています。
AHCI Link Power Management (ALPM)
結果はどうなったでしょう。プチフリーズの発生は少なくなりましたが、まだ、時々出てくるという状態です。対策前のように盛大に発生するというほどではないので、我慢すればなんとか使えるという状態です。
ネットを見ている分にはほとんど問題ありませんが、ブログを書いているときに発生すると少しイライラします。そこで、もう少し対策することがないか、設定画面を見ていて一つ発見しました。「ブラックリスト」の設定項目がありましたのでこれを追加してやりました。
◎ SATA_LINKPWR_BLACKLIST
SATAホストデバイスをリンク電源管理から除外します
設定方法はマニュアルにありました。下記コマンドの出力の「AHCI Link Power Management(ALPM)」セクションを調べて、有効なホスト識別子(形式:「hostX」)を確認します。
# sudo tlp-stat -d
今回は2つのホストが存在していましたので、"host0 host1" をブラックリストへ登録しました。複数のホストがある場合はスペースで区切ります。
SATA_LINKPWR_BLACKLIST="host0 host1"
正しく設定されているか、「TLP」の設定項目を念の為チェックしています。
SATA_LINKPWR_BLACKLIST
2020/1/21 追記
対策をもう一つ追加しました。
TIMEOUT=15 をコメアウトし無効にしました。
AHCI_RUNTIME_PM_TIMEOUT=15
こんな簡単な対策でも効果はあり、ほとんど出なくなりましたが、完全に出なくなったかと言えば嘘になります。時々出ますが、時間が短くなりました。ただ、HDD に比べると少し多いなあと言うのが正直な感想です。
そんなトラブル時の簡単な解決方法は、別タブを一瞬開き、即戻れば解決します。これが手間いらずの一番簡単な解決方法です。プチフリーズ対策をしていなくてもこれだけでオッケーです。
ブラウザは Chrome を使用しているのですが、ネットを使用している時だけ多発しているように感じられるのは、極楽はぜの気のせいでしょうか。
2020/1/21 追記
ブラウザを Chromium へ変更しました。やはり余計な動作が抑えられているようで、体感的に少し減りました。
近所のりんごの木は、当たり前のように雪の中に突っ立っています。しかし、その雪が少ないのです。今日現在の積雪が 11 センチしかありません。気象庁の過去の積雪データを見てみると、同じ日の積雪はこのようになっていました。今年の冬は、このままで終わって欲しいと祈る極楽はぜでした。
2020年 7cm
2019年 70cm
2018年 36cm
2017年 13cm
2016年 53cm
2015年 123cm
最近の極楽はぜは、お正月一週間ジムを休んで休養とったのに、逆に腰が痛くなってしまい難儀しています。どこにも出かけず家でゴロゴロしていたのが裏目となってしまったようです。なかなか思うようには行きませんね。では、また。
リナックス安物買いで勉強し