nVIDIA OptimusのGPUが寝てくれない問題

不幸にしてGPUを常に監視する環境を得てしまうと気づく問題

Optimusテクノロジを採用したGPUにはON・IDLE・OFFの三つの状態があって、基本的にGPUが呼ばれていないときはOFFになって消費電力を抑える作りになっているのだけれど、気づけばGPUがOFFにならない状態になっている。しかもこれがまた曲者で、タスクトレイのnVIDIA GPU アクティビティにはGPUを使用しているアプリケーションが1つも表示されていないのに、GPUがOFFにならないのよね。消費電力が気になる人には非常に困った問題なのです。

で、記事になったと言うことは解決法を見つけたと言うことで、ご参考までに。

結論から言うと犯人はflash playerで、実行ファイルをnVIDIAコンパネのリストに入れてiGPU動作に設定すれば大丈夫。flash playerのHWアクセラレーションを切る方法もあるけれど、iGPUがあるのに切る意味も無いでしょう。もしくはグローバル設定でiGPU動作に設定しておいて、dGPUを使用するアプリだけ選び抜くか。その辺はお好みで。

flash playerの実行ファイルの場所だけれど、64bit機ならSysWOW64のMacromedフォルダに入っているので参考までに。まぁプロセス一覧に表示されるから分かると思うけれど。

さて、件のflash playerの妙な動作について少しだけ。Optimus Test ViewerでGPUを監視すると、Referenceの値が170程度あってGPUがONのまま、使用アプリは表示無しの状態。Referenceってのは要するにGPUの参照元の数なんだろう。何も動作していないのに、170も参照されてるってどういうこと?って暫く頭を悩ましたけれど、タブ数0のFirefoxのメインウインドウを閉じると参照は綺麗さっぱり0になり、すぐにGPUはOFFになった。これだけ見るとFirefoxが犯人なのかなと勘違いしそうだけれど、Firefox自体はiGPU動作リストに入っているし、他に原因があるはず。ということでFirefox上で動作しているflashが浮かび上がったのでした。

Firefox上でだけかは知らないのだけれど、一度でもflashがGPUを呼んでHWアクセラレーションを使用すると、Firefox自体がシャットダウンするまでGPUを起こしたままにしてしまうらしい。なのでたとえばようつべで動画を再生してGPUを起こし、そのタブを閉じてflashplayerがどのタブ上にも無い状態にしても、flash playerのプロセスは生きていてGPUも起きっぱなし。こんなのHWiNFOとRainmeterで常時監視でもしてなきゃ気づくわけないでしょうな。

似た例としてTHX TruStudioPROがあって、こいつも一度画面上に姿を現すとタスクトレイに戻ってもGPUを起こしっぱなしにしてしまう。flashと違うのはアクティビティに表示されることだけれど、起こってる事態は大差ない。昔はiGPUとdGPUの切り替えが不安定で、何もしていないのにdGPUが起きたり寝たりして、ウインドウを動かすのすら不安定という状況だったから、THXがGPUを起こしっぱなしにするのを利用してその症状を抑えていたりしたけれど、最近は非常に安定しているからもはやその必要もなくなった。なので今はTHXもiGPU動作のリストに入れてGPUには出来るだけ寝てもらってます。

今から思えばあれも何らかのアプリ(もしかしてエクスプローラ?)がGPUを無駄に呼んでたりするのが原因だったのかもしれないけれど、もはや確かめようもないしどうでもいい。とりあえず設定さえ煮詰めれば最近のOptimusはずいぶんと良くなったよってことです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です