macOS SierraではgfxCardStatusに要注意

Header

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に依存するプログラムとみなされるようになった模様。

Dependency

▲実際Dependenciesのところに「gfxCardStatus」が含まれていることがわかります。

Switch

▲この状態では「「Integrated Only」に切り替えることができません。

fork版2.4.1iが有効かも

gfxCardStatusの公式版は残念ながら開発がストップしている状態なため、この問題を解決すべくfork版がいくつか作られているようです。

なかでも人気はSteve Schow氏が作成したsteveschow/gfxCardStatusで、macOS Sierraの対策のほか、integrated-onlyパッチをとりこんだビルドが公開されています。

New version

▲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にまとめられていました。

スポンサーリンク