MacのGPUの稼働状態を確認する事ができるメニューバーアプリ「gfxCardStatus」。
GPUのリペアエクステンションプログラムが発動したMacBook Pro 2011や2012といった機種を使用しているユーザーのなかにはgfxCardStatusを使用して、できるだけ外部GPUを使用しないよう監視を行っている方も多いかもしれません。
ところがmacOS SierraではgfxCardStatus自体が、外部GPUに依存したプログラムとみなされ、gfxCardStatusを起動するだけで外部GPUが使われるようになっています。
気をつけないと常に外部GPUが動きっぱなしという状況になりかねません。詳細は以下。
gfxCardStatus v2.3がだめ
そもそもMacのGPU切り替えはOS側で制御されています。gfxCardStatusに実装されている「Integrated Only」というメニューを使っても完全に内蔵GPUに固定することはできず、例えば外部ディスプレイを接続したり、特定のプログラムを起動することで外部GPUが自動的に動いてしまうのです。
GitHubの「macOS Sierra – Compatibility Issues」で議論されている内容によると、現在公式サイトで配布されているgfxCardStatus v2.3はmacOS Sierraでは、外部GPUに依存するプログラムとみなされるようになった模様。
▲実際Dependenciesのところに「gfxCardStatus」が含まれていることがわかります。
▲この状態では「「Integrated Only」に切り替えることができません。
fork版2.4.1iが有効かも
gfxCardStatusの公式版は残念ながら開発がストップしている状態なため、この問題を解決すべくfork版がいくつか作られているようです。
なかでも人気はSteve Schow氏が作成したsteveschow/gfxCardStatusで、macOS Sierraの対策のほか、integrated-onlyパッチをとりこんだビルドが公開されています。
▲fork版のバージョンはgfxCardStatus v2.4.1。依存リストからgfxCardStatusが消え、内蔵GPUで動く事が確認できました。
ただし他のプログラムも依存が増えた?
これでめでたく解決…といいたいところですが話はこれで終わりません。macOS Sierraでは外部GPU起動のトリガーが変更されたのかSizeUpやKeePassX、MarsEditといった他のアプリを動かしても外部GPUが動くようになっています。
GPUに爆弾を抱える機種を使っていて、できるだけ内蔵GPUを使って過ごしたい方はmacOS Sierraアップグレードを当面?見合わせるのも一つの手段かもしれません。
少なくともgfxCardStatusを使用する場合は、fork版を使ったほうがよさそうです。
更新: v2.4.1iもだめかも?
macOS Sierra – Compatibility Issues のその後の議論によるとmacOS SierraではgfxCardStatusもv2.4.1iもうまく動作しない場合があるようです。問題が解決するまでfork版の作者steveschow氏はmacOS Sierraで使用しないことを推奨しています。
またRedditによると、アプリのInfo.plistに「NSSupportsAutomaticGraphicsSwitching」というキーを追加すれば問題の修正ができるという情報もありますが、効果は不明。
macOS SierraによってGPUが起動するアプリの一覧はWarning: Bugs in Sierra which affect all MacBook Pro 2010 modelsにまとめられていました。