古いパソコンって動きが遅くなりますよね。
それはスペックが追いつかなくなったといった要因もありますが、やっぱりパーツの老朽化が大きな原因になります。
特に古くなったHDDはかなり動作不良を起こします。タスクマネージャ上でディスクが常に100%に貼り付いた状態です。こんな状況で起動もままならないパソコンが増えてきました。
どうしたもんかなぁと考えていた時に、こちらの動画を見てSSDへの換装をやってみた次第です。すると見違えるように動作が速くなりました。特に起動速度がね。
ただ、動作は良くなったものの、使っている途中に突然強制終了するという事態がしばしば起こるようになりました。厳密にはブルースクリーンに変わり、変わった瞬間に再起動が始まるというもの。
再起動後に表示されるのは黒い背景に「Boot Device Not Found」の白い文字。ただ、そこでディスクやメモリのチェックを行うも正常で、続行すると普通にWindowsが起動します。
いろいろ原因を調べていく中で、こいつがKP41病の仕業ということがわかりましたが、その根本的な原因がわからずいろいろ試した結果、一応動作が安定したのでその記録です。
KP41病とは
KP41病とはイベントビューアで確認できる重大エラーで、ソースが「Kernel-Power」、イベントIDが「41」のエラーです。
そのエラー内容は「システムは正常にシャットダウンする前に再起動しました。このエラーは、システムの応答の停止、クラッシュ、または予期しない電源の遮断により発生する可能性があります。」でして、要するに原因不明で電源切れたってことです。
実際に対象のパソコンのイベントビューアで、KP41病が発症する直前からのエラーを並べるとこんな感じ。
レベル | ソース | イベントID | 説明 |
---|---|---|---|
エラー | volmgr | 161 | ダンプ作成中のエラーのため、ダンプファイルの作成が失敗しました。 |
情報 | FilterManager | 6 | ファイス システム フィルター ‘FileCrypt’ (*) が正常に読み込まれ、フィルターマネージャに登録されました。 |
情報 | FilterManager | 6 | ファイス システム フィルター ‘npsvctrig’ (*) が正常に読み込まれ、フィルターマネージャに登録されました。 |
重大 | Kernel-Power | 41 | システムは正常にシャットダウンする前に再起動しました。このエラーは、システムの応答の停止、クラッシュ、または予期しない電源の遮断により発生する可能性があります。 |
起きる度にこの順番でイベントが書き込まれていました。
このイベントの発生順に何かヒントがあるかと思いかなり考えましたが、結論は「だからどうした?」でした。
正常に動いているパソコンと見比べてみて、似たようなイベントの並びも見つけましたが結局原因はわかりませんでした。
ちなみに表示されるブルースクリーンは「Critical Process Died」でした。結構重篤そうだけどいろんな要因で起きるようで、これまた原因特定は大変そうです。
KP41病を抜け出すためにやったこと
原因は明らかになっていないので、ネットで見つけた情報を元に片っ端からやっていくことにしました。
クリーンインストールをしたけど解決せず
まずはクローンの過程に落ち度があったのではないかと疑いました。
冒頭に紹介した動画と同じように、Western DigitalのSSDとAcronis True Imageでクローンを作成していました。
そういうわけでクローン後のSSDでクリーンインストールを行いました。USBメモリにWindowsを入れてメディアディスクを作ってやるやつです。
やったのは3パターン。
- Windows起動後にメディアディスクを起動し、ファイルやアプリを残した状態でクリーンインストール
- メディアディスクからブート起動し、完全な初期化を行う形でクリーンインストール
- SSDの中身を全削除し、まっさらの状態のSSDにクリーンインストール
1と2までやってもダメで、パーティションの構成がダメかと思って3までやりましたがこれでもダメでした。クローンの作成過程には特に問題はなかったようです。ついでにクリーンインストールが完了した直後のまま検証したので、インストールしていたアプリの仕業でもありませんでした。
ついでに、移すデータとか設定が少なければわざわざクローンを作成しなくても、新品のSSDにクリーンインストールしてキッティングし直す方が早いことに気付きました。
ネットで出てきた諸設定の変更もうまくいかず
KP41病について調べるととりあえず下記のような設定を変えろと出てきます。
- 一定時間経過後にハードディスクの電源を切る設定をオフにする
- 一定時間経過後にスリープする設定をオフにする
- 高速スタートアップをオフにする
- すべてのドライバーを更新する
- SFCコマンドを実行する
- DISMコマンドを実行する
- エラー発生時に自動的に再起動する設定をオフにする
以上すべてやりましたがダメでした。特に1番最後のやつはハードウェアに異常がないと確信できる場合のみの、いわば最終手段だったのですがやってもダメでした。
細かい方法については僕がやっているWikiの投稿にまとめています。
仮想メモリのページングファイルをなしにすると直った
ここまでやってダメで、最終的に参考になったのがこちらのページ。
こちらのページに載っている仮想メモリのページングファイルをなしにする設定でなんと動作が落ち着きました。
- コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 を開く
- 詳細設定タブにあるパフォーマンスの「設定」を開く
- 詳細設定タブにある仮想メモリの「変更」を開く
- 「すべてのドライブのページングファイルのサイズを自動的に管理する」のチェックを外す
- 「ページングファイルなし」のラジオボタンにチェックを入れてOK
これを行ったところ、動作がかなり安定しました。
実はこれと同時に電源プランを高パフォーマンス設定にするというのもやっているので、もしかするとこちらかもしくは両方が有効だったのかもしれませんがわかりません。そこも検証しようと思ったのですが、早いこと元の持ち主にパソコンを返したかったのでそこまで深追いはしませんでした。
仮想メモリのページングファイルとは
とりあえず目下の課題が解決したとはいえ、どういったことを設定したのかわからないままはあまりよくありません。
仮想メモリとページングについては応用情報で勉強したはずなのですが、あまり覚えていませんのでこれを機に復習です。
仮想メモリは、実記憶 (主記憶) 装置に記録し切れないデータを補助記憶装置に起き、プログラムからは実記憶と補助記憶関係なく見せる仕組みです。
実記憶の容量不足を補う意味合いで多く使われますが、主記憶でフラグメンテーションが起きてデータが細切れになっていても仮想メモリ上でまとめて入れて対応付けさせればOKというメリットもあります。
ページングとは、プログラムを「ページ」という単位に分割して管理する方式です。
プログラムを実行する際、ページを仮想記憶には一旦割り当てますが、実記憶にはまだ読み込ません。この時点では実記憶上にページがないので「ページフォールト」という割り込みが発生します。そこで対象ページを実記憶に読み込みます。これを「ページイン」といいます。
実記憶がいっぱいになり、ページを補助記憶に追い出すことをページアウトといいます。実記憶の容量が少ないとページインとページアウトを行う頻度が高くなり、処理効率が低下するスラッシングという現象が起きてしまいます。
今回行った設定は、ページングで使用するの総容量を0にして、要は仮想メモリを使用しないということなんですかね。これはこれで大丈夫か心配です。
今回参考にしたページでは、不具合のあるページングが残っておりそれを読み込むことでKP41が発生した可能性を示唆されていますが、それであればページングの設定をあとから戻すとどうなるのでしょうか。試せそうならまた検証したいところです。
コメント