web-dev-qa-db-ja.com

MacBook Proでアクティブなビデオカードを確認する方法

MacBook Proの2つのビデオカードには、パフォーマンスと電力消費の両方に大きな違いがあります。

問題は、どれを実行しているかをよく忘れてしまうことです。これにより、飛行機に乗っているときにかなり早くバッテリーが切れてしまうことがあります。私の知る限り、アクティブなシステムを確認するには、エネルギーセーバーシステム設定を開く必要があります。

現在のビデオカードのステータス(メニューバー、デスクトップなど)を表示するツールを誰かが知っていますか?特に有効なのは、アクティブなコマンドを報告するターミナルコマンドです。これをGeekToolセットアップの一部として使用できます。

また、APIのどこでこの情報を探すかを誰かが知っている場合は、自分のツールを作成することもできます。

誰かアイデアはありますか?

編集: system_profilerに関する以下の回答は、間違いなく正しい方向への一歩です。 MBPは、どちらがアクティブであるかに関係なく、両方のビデオカードの情報を表示します...しかし、非アクティブカードに接続されているディスプレイについては、「ディスプレイが接続されていません」と表示されます。私はそこからそれを理解する何かをスクリプト化できるべきです.

EDIT2:キーはsystem-profierからxml形式で出力を取得しています(-xmlスイッチを使用)。結果のplistを解析して結果を表示するスクリプトを以下に示します。

14
mmc

他の2つの回答で提示された基本的なアイデアを使用して、「正しい」ビデオカードを使用しているかどうかを判断するために、次のスクリプトを作成しました(正しい=「バッテリーおよび9400で」または「ACアダプターで9600を使用して」)

これらのスクリプトがどれほど壊れやすいかはわかりません...それらはsystem_profile plistの特定の順序で表示される特定のデータに依存しています...しかし、この順序は私のマシンで一貫しているようです。これをGoogle経由で見つけた人のためにここに配置します。

Ruby:(「Plist」gemをインストールする必要があります)

# video_profiler.rb
require 'rubygems'
require 'plist'

# calculate video data
data = `system_profiler SPDisplaysDataType -xml`
structured_video_data = Plist.parse_xml(data)
display_status = structured_video_data[0]["_items"][0]["spdisplays_ndrvs"][0]["spdisplays_status"]

if (display_status.eql?('spdisplays_not_connected')) then 
    card = '9400'
else
    card = '9600'
end

# calculate power source data
data = `system_profiler SPPowerDataType -xml`
structured_power_data = Plist.parse_xml(data)
on_ac_power = (structured_power_data[0]["_items"][3]["sppower_battery_charger_connected"] == 'TRUE')

# output results
if (on_ac_power and card.eql?'9400') or (not on_ac_power and card.eql?'9600'):
    result = 'You\'re on the wrong video card.'
else
    result = "You\'re on the correct video card."
end

puts(result)

Python:

# video_profiler.py
from subprocess import Popen, PIPE
from plistlib import readPlistFromString
from pprint import pprint
sp = Popen(["system_profiler", "SPDisplaysDataType", "-xml"], stdout=PIPE).communicate()[0]
pl = readPlistFromString(sp)
display_status = pl[0]["_items"][0]["spdisplays_ndrvs"][0]["spdisplays_status"]
if (display_status == 'spdisplays_not_connected'): 
    card = '9400'
else:
    card = '9600'

# figure out battery status
sp = Popen(["system_profiler", "SPPowerDataType", "-xml"], stdout=PIPE).communicate()[0]
pl = readPlistFromString(sp)
on_ac_power = (pl[0]["_items"][3]["sppower_battery_charger_connected"] == 'TRUE')


if (on_ac_power and card == '9400') or (not on_ac_power and card == '9600'):
    result = 'You\'re on the wrong video card.'
else:
    result = "You\'re on the correct video card."

pprint(result)
3
mmc

System_profilerがアクティブディスプレイのみを報告すると仮定すると(私は知るためにMBPの近くではありません)、これをGeekToolに接続する方法について報告します。

system_profiler | grep GeForce | sed -e 's/:/ /'

編集:

「接続されていないディスプレイ」と同じ行に非アクティブなものがリストされている場合はどうですか?

system_profiler | grep GeForce | grep - v "display not connected" | sed -e 's/:/ /'

最初にアクティブなものがリストされている場合はどうですか?

system_profiler | grep GeForce | head -n 1 | sed -e 's/:/ /'

アクティブが2番目の場合、頭を尾に置き換えます。

6
ridogi

http://codykrieger.com/gfxCardStatus

これはバーに常駐する小さなアプリで、使用中のカードだけでなく、カードを切り替える方法とタイミングを制御することもできます。たとえば、統合されたグラフィックカードのみをバッテリー電源で動作するように設定できます-など...

4
S S Cheema

私はこの質問がかなり古いことを知っています-しかし、それでもつまずく人にとって、他の選択肢があることを知っているのは良いことかもしれません。最も簡単な解決策として、チェックアウト GFXCheck があります。これは、アクティブなグラフィックカードを

2
micdah

ここには新しいMacBook Proはありませんが、システムプロファイラを使用してアクティブなカードを確認できます。端末でsystem_profilerを使用して、システム構成を確認します。

Terminal Screenshot

1
Bryan Schuetz

Ruby gem active_gfx]を使用できます: https://github.com/ChaosCoder/active_gfx

active_gfxは、macOSシステムで現在使用されているグラフィックカードを示します。

このツールは、アクティビティモニターで開いているプロセスのリストを調べる代わりに、system_profilerを照会して、現在使用されているグラフィックチップを出力します。

active_gfxはRuby gemなので、gem install active_gfxからインストールします。

0
ChaosCoder