2017-10-16

GTX1070 nvlddmkm.sys のフリーズがようやく直った

1年以上悩まされてきたNvidiaドライバ nvlddmkm.sys関連の突発フリーズ現象をようやく解決できた。
ここに至るまでにやったことと無駄だったことを記録しておく。なお現象は

  • 「前触れ無く当然フリーズする」
  • 「エラーメッセージが出ず、画面そのままでリセットボタンも効かない」
  • 「イベントログを見ても原因が書いてない(Kernel Power 41、いわゆるKP41状態)」
  • 「ゲーム中ではなくブラウズや動画再生などで頻発」
  • 「起動後ログイン画面で放置しているだけでフリーズすることも」
  • 「ベンチマーク的な性能は問題なく出る」
  • 「minidumpを読むとnvlddmkm原因で死んだらしいことがわかる」
  • 「たまにストップコードDPC Watchdog ViolationやSystem Thread Exception Not Handledが記録される」

という感じ。


決定打になった対策は「グラボを外して装着し直す」


たぶん本当にこれだけ。詳しく書くと

オンボードグラボドライバをDriver Fusionで全部消す
→ グラボを外す
→ オンボードで再起動
→ オンボードドライバ再インストール
→ グラボ無しならフリーズしないことを確認
→ グラボドライバをダウンロード
→ ネット切断
→ グラボを装着
→ グラボ+全Nvidiaドライバをクリーンインストール
→ 再起動
→ ネット再接続

の流れ。ドライバ、電源、ソフトウェア関係を疑った
あらゆる対策が効かず、苦肉の策で試したこれが
まさか当たったという感じ。


効果があったような気もする対策


試した中で多少なりともフリーズ頻度が減った対策。
ただ、対策直後はフリーズが収まっても
次の日にはより悪化したりもするので、まったく信用ならない

  • MacTypeを無効化する
  • 仮想ドライブ系ソフトをアンインストールする
  • VirtualBoxをアンインストールする
  • UltraVNC Serverをアンインストールする
  • 使ってないUSB機器を本体から外す
  • グラボドライバをネット切断状態で全消しして再インストール

今回の「グラボ外して再装着」も
数日後にはここのリストの
仲間入りをしているかもしれないが。


効果がまったく無かった対策


ネットを探して出て来た対策のうちやっても全く効果が出なかった対策。

  • チップセットドライバのアップデート
  • あらゆるドライバのアップデート
  • グラボのドライバを消したあとnvlddmkm.sysだけ抽出して個別に入れる
  • 未使用デバイス(オンボードグラフィックス含む)のドライバを全削除
  • レジストリ編集でDPC Watchdogの閾値を増やす
  • Intel Management Engineのアップデート
  • Intel Rapid Strageのアップデート
  • Intel AHCI/SATAコントローラドライバを標準ドライバに変える
  • その他のアプリを全アップデート
  • コンセントを抜いて5分置いたあとUSB機器全部外して再起動する
  • マルチモニタをやめてみる
  • あらゆるEvent Logのエラーをとにかく潰しまくる
  • アップデート監視などの常駐プロセスを殺しまくる
  • あんまり使ってないソフトを片っ端からアンインストールする
  • スタートアップ修復に望みをかける
  • chkdsk.exe, sfc.exe, Dism.exeなど修復系コマンドに望みをかける
  • メモリのXMPプロファイルを有効にする
  • メモリの供給電圧を5~8%ぐらい増やしてみる
  • BIOSのVRM Switching Frequencyを固定にする
  • 高速スタートアップをオフにする
  • 電源管理の省電力系設定をオフにする
  • BIOSの省電力系設定をオフにする
  • BIOSのアップデート


異常が見つからなかったテスト


  • スタートアップ修復
  • Windowsトラブルシューティング
  • chkdsk.exe, sfc.exe, Dism.exe
  • Memtest86+
  • BIOS自己診断
  • (当然だけど)SSDのS.M.A.R.T.
  • 3DMarkやその他重いゲームでGPUに負荷をかける行為
  • CinebenchなどでCPUに負荷をかける行為
  • 温度センサやファン速度の監視
  • PC内のホコリやゴミ料
  • コンセントからの供給電圧安定性


まとめ ~最後は叩いて直せ~


ネットで出てくる症状と酷似していても、情報通りの対策が効くとは限らない(ある意味当たり前)。
しっかり装着したつもりでもゴミかホコリか微妙な斜め装着かでグラボが正しく動作しないことがある。

というわけで、
「何を試してもダメだったら、最後は叩いて直せ」




ちなみに、これだけ何やっても解決できなかったフリーズなので
「どうせ今度もまた数日後には再発してるんでしょ」
みたいに諦めを孕んだ恐怖がずっと消えません。

2017-05-01

「ディスプレイドライバの応答停止と回復」の治し方

あるいは、NVIDIAドライバーの安全なアップデート方法。


2017/09/13 追記


以下の方法を使ってもフリーズしまくる現象が発生。どうも9月のWindowsUpdateが問題らしい。

WindowsUpdateには古いドライバを問答無用でアップデートしてしまう機能(個人的にはバグだと思う)があり、RS1以降これを無効化する方法はなくなったらしい。

この現象が発生すると、デバイスマネージャでドライバの日付を見たときに、Nvidiaドライバの更新日付より新しいものが入っていることが確認できる。

ドライバをクリーンインストールしても、再起動後にはドライバが勝手にアップデートされ置き換わる。

結果、安定バージョンのNvidiaドライバを使い続けていたつもりが、自動でアップデートによりドライババージョンが不整合となりフリーズ地獄の再発~となるのではないかと仮設を立てている。



解決策は「WindowsUpdateよりも新しい最新のNvidiaドライバに自らアップデートしてしまうこと」

これで自動アップデートに上書きされる危険は(ひとまず)去る。



補足すると、Nvidiaドライバの上にWindowsUpdateドライバが重なったときフリーズ地獄の悲劇となるようだ。Nvidiaドライバが1つだけ入っている状況なら(それが古いバージョンであれ最新バージョンであれ)比較的安定する。

であるから、数ヶ月おきに下記手順でNvidiaドライバを完全削除し、最新ドライバで全置き換えすれば、WindowsUpdateの影響を極力受けずに運用できるという気がする。



問題があるとすれば古いドライバでしか安定動作しないゲームをやっている場合。こんなときは……

Hosts書き換えてWindowsUpdateを殺した状態にする?



追記終わり



※あくまで自分の環境ではうまく行ったというだけの話です。やるときは自己責任でどうぞ。

対策前


  • Windows10 x64 CreatorsUpdate適用済み
  • GeForce GTX1070
  • NVIDIAドライバ381.89にアップデート(現時点で最新)
  • 「作業中に突如画面が真っ暗になり数秒後復帰」「画面が真っ暗になりそのまま数秒後に再起動」が頻発していた
  • たまに画面がついたままフリーズして、電源ボタンにも反応しなくなることがあった
  • 色々調べてみたら古いドライバの消しきれなかったゴミが悪さをしてるっぽい
  • 完全クリーンなドライバアップデートができれば改善するのではと予想



ステップ1:NVIDIAドライバのインストーラーを入手しておく

公式サイトからダウンロードしておきます。この段階で入手しておかないと後々詰むので注意。


ステップ2:ネットを切断する

ネットがつながっていると、ドライバを削除しても勝手にダウンロードされて自動インストールされてしまうので、まずネットを切る必要があります。
この先、作業がすべて終わるまでネットは切りっぱなしです。


ステップ3:NVIDIAドライバを全部消す

コントロールパネルの「プログラムと機能」でNVIDIA関連の機能を全部アンインストールしていきます。削除順は画面ドライバを最後にしたいので

GeforceExperience → Physxシステムソフトウェア → 3D Vision → HDオーディオ → グラフィックスドライバー
という感じになります。なお「アンインストール時に設定を消す」は有効にしないで進めました。

再起動して「プログラムと機能」にNVIDIA関連機能がいなくなっていたら、次に進みます。


ステップ4:デバイスマネージャーで消していく

デバイスマネージャーを開き、HDオーディオドライバーやグラフィックスドライバーが残っている場合は消していきます。
ここでも順番はHDオーディオが先です。
削除できたと思っても [操作 → ハードウェアの変更をスキャン] すると復活してきたりするので油断ならない感じ。


ステップ5:ステップ3~4を繰り返す

該当のドライバーがなくなるまで、再起動しては削除してを繰り返します。
過去のインストーラーをWindowsが保存している場合があり、再起動するとドライバーや機能が復活することがあるので、とにかく全部なくなるまで繰り返します。環境によっては20回とか再起動する必要があります。

※グラフィックスドライバーが「Microsoft 基本ディスプレイ アダプター」になっていたら、先に進んでOK


ステップ6:Program Files以下NVIDIA関連フォルダを消す

Program FilesとProgram Files (x86) の両方が対象です。
過去のインストーラーなどが残っていますのでフォルダごとすべて消します。
たかがディスプレイドライバのくせに700MBぐらい消費してたりするので不思議ですね。


ステップ7:再起動してドライバ復活がないことを確認し、インストールに進む

デバイスマネージャーを見てグラフィックスドライバーが「Microsoft 基本ディスプレイ アダプター」になっていることを確認します。
この状態でないと新規インストールになりません。

大丈夫であれば、ステップ1で入手しておいたインストーラーを起動します。
この時「高速インストール」は使わず、インストールするドライバをカスタマイズして最低限に絞ります。


  • ディスプレイからサウンド出力しないならHDオーディオは不要
  • 立体視使わないなら3DVisionも不要(対応ディスプレイ自体持ってない)
  • GeForce Experienceはそもそも不要



ステップ8:再起動して確認

インストール後はすぐに再起動します。
この段階まで来たらネットを繋ぎ直して大丈夫です。



自分はこの方法で1週間ほど様子を見ましたが、安定稼働するようになりました。
とにかく古いドライバや互換ドライバを徹底的に消せるか、というのが重要になってきます。失敗する場合はDriverFusionなどを試しても良いかもしれません。

2017-02-15

一眼レフを分解してみる

一眼レフを買ってきました。100円で。


ミノルタ時代のαです。いまこのブランドはソニーが持ってる。



ちなみに、最初から分解する目的で買ってきたものです。



とにかく目につくビスを全部外す。










シャッターユニットとミラーボックス





いろいろおもしろい部品が手に入ってよい。


フィルムを巻き取るドラム。



フォーカシングスクリーン。



メカニカルシャッター。



スリットを操作するとブラインドみたいに動く。



プリズムのかっこよさ!


シャッターユニットの上にプリズムが載っている。



外して、



剥ぐ。そして



レーーザーーー!!!





光線を1本打ち込むと中で反射していいかんじになる。



みんなもやろう分解


大量のよくわからん部品たちが手に入るぞ。