Как проверить, какая видеокарта активна в MacBook Pro?


14

Существует большая разница в производительности и энергопотреблении между двумя видеокартами в MacBook Pro.

Проблема в том, что я часто забываю, какой из них я использую. Это может привести к разрядке аккумулятора в самолете довольно быстро. Насколько я могу судить, вы должны открыть Системную настройку энергосбережения, чтобы увидеть, какая из них активна.

Кто-нибудь знает инструмент, который будет отображать (в строке меню, на рабочем столе, что угодно) мой текущий статус видеокарты? Особенно хорошо будет команда терминала, которая сообщит, какая из них активна. Я мог бы использовать это как часть моей настройки GeekTool.

Я также могу написать свой собственный инструмент, если кто-нибудь узнает, где в API я буду искать эту информацию.

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ: ответы ниже, касающиеся system_profiler, безусловно, шаг в правильном направлении. MBP показывает информацию для ОБА видеокарт, независимо от того, какая из них активна ... НО покажет «дисплей не подключен» для дисплея, подключенного к неактивной карте. Я должен быть в состоянии написать что-то, что выяснит это оттуда.

EDIT2: ключ получает выходные данные из system_profier в формате xml (используя ключ -xml). Ниже приведены сценарии для анализа полученного списка и отображения результата.

Ответы:


6

Предполагая, что 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/:/ /'

Если активен второй, то замените голову хвостом.


Почему вы заменяете двоеточия пробелами?
Даниэль говорит: восстанови Монику

4

http://codykrieger.com/gfxCardStatus

Это небольшое приложение, которое находится на панели и дает вам не только используемую карту, но и контроль над тем, как и когда менять карту. Например, вы можете настроить только встроенную видеокарту на работу от батареи и т. Д.


gfxCardStatus был обновлен для Mountain Lion и Retina MacBook Pro.
ленивец

3

Используя основную идею, представленную в двух других ответах, я написал следующие сценарии, чтобы определить, используете ли вы «правильную» видеокарту (Correct = «на батарее и используете 9400» или «на адаптере переменного тока и используете 9600»)

Я понятия не имею, насколько хрупки эти скрипты ... они полагаются на конкретные данные, появляющиеся в определенном порядке в plist system_profile ... но этот порядок кажется последовательным на моей машине. Размещение здесь для тех, кто когда-либо найдет это через Google.

Ruby: (требует установки драгоценного камня "Plist")

# 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)

2

Я знаю, что этот вопрос довольно старый, но для тех, кто все еще натыкается на него, было бы неплохо знать, что есть и другие варианты. Для самых простых решений можно проверить GFXCheck , который является простым приложением, которое покажет активную видеокарту в


2
или gfxcardStatus, который дополнительно позволяет вам выбрать, какой из них использовать вручную или автоматически, в зависимости от вашего профиля мощности.
Роберт С Чаччо

2
На самом деле, вскоре после написания этого поста я нашел gfxCardStatus и установил его - лучше. Имеет автоматическое переключение и менее раздражающий интерфейс.
Микда

Вы когда-нибудь выясняли, как закончить предложение?
fixer1234

1

У меня нет одного из новых MacBook Pro здесь, но вы сможете увидеть активную карту через System Profiler. В терминале просто используйте, system_profilerчтобы увидеть конфигурацию системы:

Скриншот терминала


0

Вы можете использовать рубиновый камень, который active_gfxя написал: https://github.com/ChaosCoder/active_gfx

active_gfx показывает видеокарту, используемую в настоящее время вашей системой MacOS.

Вместо того, чтобы просматривать список открытых процессов в Activity Monitor, этот инструмент выплевывает текущий используемый графический чип, запрашивая system_profiler.

Как active_gfxрубиновый камень, установите его через gem install active_gfx.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.