どうも!SSD(スーパーセクシーダイナマイツ)と噂の方の正宗です。
よっしゃ、前回のDAI語のリベンジも完璧に済んだところで本題です。
換装したものの、1〜2ヶ月使用しているとなぜかフリーズを連発して起動不可になってしまっていたこのSSD。
使用しているMacは、Mid 2013モデルで13インチのMacBook Airです。
・SSD関連記事一覧
鬼フリーズ(=Macが起動不可になってOSのクリーンインストールからやり直す羽目になるくらい猛烈なフリーズ)の原因がわからず日々モヤモヤしていたので、他に似た例がないか?とググってみたんですよ。
そしたら、多くの人が『スリープからの復帰時にフリーズする/カーネルパニックを起こす』という事態に見舞われていたんです。
もしかしてこれか?
私の場合、2022年始の鬼フリーズは確かにスリープ復帰時だった。
ちなみに2021年末の鬼フリーズの時の状況はもう覚えてない。
とりあえず原因の一つである可能性は高いので、対策を打つことにしました。
■取った対策
Macのスリープには設定が3つあることが分かりました。
1、通常スリープ
2、ディープスリープ
3、セーフスリープ
そしてこのスリープによるMac鬼フリーズ現象は、『NVMeのSSDを使っていること』と『使用しているMacがディープスリープに入ること』の2つの条件が重なると頻繁に出始めるようです。
なので、NVMeのSSDを使っている場合、取るべき対策は『Macにディープスリープをさせない』ということになります。
■スリープの設定を変更する方法
ターミナルを使ってスリープの設定を変更することになります。
まずは、今現在のスリープの設定がどうなっているかを確認してみましょう。
ターミナルを起動して『pmset -g』を入力して実行します。
するとズラズラと20行ほどの設定項目が出てくるので、その中から『hibernatemode』という項目を探します。
真ん中チョイ下の方にあると思います。
その『hibernatemode』の右隣に表示されている数字が、現在のスリープの設定を表した設定値となっています。
設定値の内訳はこうなっています。
1、通常スリープの場合は設定値『0』
2、ディープスリープの場合は設定値『25(または1の可能性もあり)』
3、セーフスリープの場合は設定値『3』
確認が済んだら設定値を変更します。
どれに変更するのかと言うと、通常スリープの『0』です。
なぜ通常スリープの『0』なのか?理由は後述します。
『hibernatemode』の変更の仕方は、
1、ターミナルにて『sudo pmset -a hibernatemode 0』を入力し、実行します。
2、パスワードを訊かれますので、入力して実行します。
3、実行後に即完了となるので、上述した『pmset -g』で設定値を確認してみましょう。
4、『hibernatemode』の設定値が0になっていたら成功です。
『sudo pmset -a hibernatemode 3』で実行すればセーフスリープになりますし、『sudo pmset -a hibernatemode 25』で実行すればディープスリープになります。
末尾の数字が設定値になってるんですね。
■なぜ通常スリープの『0』なのか?
まず、それぞれのスリープ設定がどういうものなのか?を説明しますね。
1、通常スリープ:スリープ中でもメモリーに電流を供給し続けることでメモリー上のデータを保持しています。スリープからの復帰が早い、さらに、スリープ時にストレージ(SSDやHDD)へのデータの読み書きをしないのでストレージの寿命が縮みにくい、という大きなメリットがありますが、スリープ中でも消費電力が高くなることと、スリープ中にACアダプターやバッテリーからの電流の供給が絶たれると、保存されてないメモリー上のデータは失われるという大きなデメリットもあります。
2、ディープスリープ:スリープに入ると即座にメモリー上のデータをストレージに書き込んで退避させ、メモリーへの電流を遮断します。スリープ中の消費電力が低くなることと、スリープ中に停電やバッテリー切れなどで電流の供給が切れてもメモリー上のデータを保持し続けることができる、という大きなメリットがありますが、スリープからの復帰時にストレージからメモリーへのデータの読み込みを行うため、スリープの復帰に時間がかかる、さらにスリープの度にメモリー上のデータをストレージに読み書きするという仕様上、ストレージの寿命が縮みやすくなるという大きなデメリットがあります。
3、セーフスリープ:通常スリープとディープスリープのいいとこ取りで、現行のMacはこのセーフスリープがデフォルトの設定になっているハズです。スリープした直後は通常スリープとなっていますが、スリープから3時間経過すると自動的にディープスリープに移行します(2013年以前のMacだと1時間でディープスリープに移行するようです)。スリープ直後はまたすぐ使うかもしれないから復帰の早い通常スリープで待機、3時間経過したらデータ保全、及びバッテリー稼働時のバッテリー持ちを優先してディープスリープに移行、と非常に理にかなっています。
っと言う訳で、本来ならデフォルト設定のセーフスリープにしておきたいのはやまやまなのですが、NVMeのSSDを使っているとディープスリープからの復帰時に鬼フリーズしやすくなってしまう現状では、消去法で通常スリープを使うしか選択肢が無いんですねコレが。
再起動だけで済むのなら楽なもんですが、私の場合前回はセーフモードでの起動もできない状態になって完全にお手上げでした。
バックアップ取ってなかった分のデータは全部諦めて、何時間もかけてOSのクリーンインストール→さらに何時間もかけてタイムマシンからのデータ復旧とかマジもう二度とやりたくないです。
NVMeのSSDを使っている時だけこんな現象が起こる理由は、多分、ディープスリープからの復帰時にNVMeのインターフェース経由でデータを読み込む時に限ってピンポイントにトラブルが起こる何らかの原因があるんだろうけど、そこまでいくともうOSの仕様の問題だからいかんともしがたいですね。
今後のOSのアップグレードによってこの問題が改善する可能性は大いにありますが、私が使っているMid 2013モデルのMacBook Airだと、OSはmacOS 11 Big Surで頭打ちなんスよw
私のMacBook Airは、現行のmacOS 12 Montereyには既に対応してません。
これはもうダメかもわからんねw
ってな訳で『NVMeのSSDを使っている場合、Macにディープスリープをさせないことがカーネルパニック対策の一つとなる』という記事でした。
しばらくこれで様子を見てみます。
「ふふっ子猫ちゃん...もう寝かさないぜ?ベイビー」(SゥーパーSェクシーDァイナマイツボイスで)
※コンテンツ内にプロモーションが含まれる場合があります。
※最近、アクセスが集中して重い場合があります。申し訳ありません。
2022年02月28日