Como verificar qual placa de vídeo está ativa em um MacBook Pro?

14

Há uma grande diferença no desempenho e no consumo de energia entre as duas placas de vídeo em um MacBook Pro.

O problema é que muitas vezes esqueço qual deles estou executando. Isso pode acabar com uma bateria descarregada enquanto você estiver em um avião rapidamente. Pelo que sei, é necessário abrir a Preferência do sistema de economia de energia para ver qual está ativo.

Alguém sabe de uma ferramenta que exibirá (na barra de menus, na área de trabalho, o que seja) o status atual da minha placa de vídeo? Especialmente bom seria um comando de terminal que informaria qual estava ativo. Eu poderia usar isso como parte da minha configuração do GeekTool.

Também sou capaz de escrever minha própria ferramenta se alguém souber onde na API eu procuraria essas informações.

Alguém tem alguma ideia?

EDIT: As respostas abaixo sobre system_profiler são definitivamente um passo na direção certa. O MBP mostra informações para AMBAS as placas de vídeo, independentemente de qual esteja ativo ... MAS exibirá "tela não conectada" para a tela conectada à placa inativa. Eu deveria ser capaz de escrever algo que descubra a partir daí.

EDIT2: A chave está recebendo a saída do system_profier no formato xml (usando a opção -xml). Os scripts estão abaixo para analisar a lista resultante e exibir o resultado.

mmc
fonte

Respostas:

6

Supondo que system_profiler reportará apenas a exibição ativa (não estou perto de um MBP) para saber como conectar isso ao GeekTool:

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

Editar:

Se listar o não ativo na mesma linha que "display não conectado", que tal:

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

Se ele listar o ativo primeiro, que tal:

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

Se ativo for o segundo, substitua a cabeça pela cauda.

ridogi
fonte
Por que você substitui os dois pontos por espaços?
Daniel diz Reinstate Monica
4

http://codykrieger.com/gfxCardStatus

Este é um pequeno aplicativo que reside na barra e oferece não apenas o cartão em uso, mas também o controle sobre como e quando trocar o cartão. Por exemplo, você pode definir apenas a placa gráfica integrada para funcionar com a bateria - etc ...

SS Cheema
fonte
O gfxCardStatus foi atualizado para o Mountain Lion e o Retina MacBook Pro.
urso-beiçudo
3

Usando a idéia básica apresentada nas outras duas respostas, escrevi os seguintes scripts para determinar se você está usando a placa de vídeo "correta" (Correta = "na bateria e usando o 9400" ou "no adaptador de corrente alternada e no 9600")

Não tenho idéia de quão frágeis esses scripts são ... eles dependem de dados específicos que aparecem em uma ordem específica no sistema system_profile ... mas essa ordem parece consistente na minha máquina. Colocá-lo aqui para quem já encontrar isso pelo Google.

Ruby: (requer a instalação da gema "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)

Pitão:

# 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)
mmc
fonte
2

Sei que essa pergunta é bastante antiga - mas, para quem ainda se depara com ela, pode ser bom saber que também existem outras opções. Para as soluções mais simples, pode-se verificar o GFXCheck , que é um aplicativo simples que mostra a placa gráfica ativa no

micdah
fonte
2
ou gfxcardStatus, que adicionalmente permite escolher qual usar manualmente ou automaticamente com base no seu perfil de energia.
Robert S Ciaccio
2
Na verdade, logo após escrever este post, encontrei o gfxCardStatus e o instalei - muito melhor. Possui comutação automática e uma interface menos irritante.
micdah
Você já descobriu como terminar a frase?
Fixer1234,
1

Não tenho um dos novos profissionais do MacBook aqui, mas você poderá ver o cartão ativo por meio do System Profiler. No terminal, use apenas system_profilerpara ver a configuração do sistema:

Captura de tela do terminal

Bryan Schuetz
fonte
0

Você pode usar a gema rubi active_gfxque escrevi: https://github.com/ChaosCoder/active_gfx

active_gfx mostra a placa gráfica atualmente em uso pelo seu sistema macOS.

Em vez de percorrer a lista de processos abertos no Activity Monitor, essa ferramenta cospe o chip gráfico usado atualmente consultando o system_profiler.

Como active_gfxé uma gema de rubi, instale-a via gem install active_gfx.

ChaosCoder
fonte