¿Cómo verificar qué tarjeta de video está activa en una MacBook Pro?

14

Hay una gran diferencia en el rendimiento y el consumo de energía entre las dos tarjetas de video en una MacBook Pro.

El problema es que a menudo olvido cuál estoy ejecutando. Esto puede terminar con una batería agotada mientras está en un avión con bastante rapidez. Por lo que puedo decir, tienes que abrir la Preferencia del sistema de ahorro de energía para ver cuál está activo.

¿Alguien sabe de alguna herramienta que muestre (en la barra de menú, en el escritorio, lo que sea) el estado actual de mi tarjeta de video? Especialmente bueno sería un comando de terminal que informaría cuál estaba activo. Podría usar eso como parte de mi configuración de GeekTool.

También soy capaz de escribir mi propia herramienta si alguien sabe dónde en la API buscaría esta información.

¿Alguien tiene alguna idea?

EDITAR: Las respuestas a continuación sobre system_profiler son definitivamente un paso en la dirección correcta. El MBP muestra información para AMBAS tarjetas de video, independientemente de cuál esté activo ... PERO mostrará "pantalla no conectada" para la pantalla conectada a la tarjeta inactiva. Yo debería ser capaz de algo secuencia de comandos que se lo imagina a partir de ahí.

EDIT2: La clave es obtener el resultado de system_profier en formato xml (usando el modificador -xml). Las secuencias de comandos están debajo para analizar el plist resultante y mostrar el resultado.

mmc
fuente

Respuestas:

6

Suponiendo que system_profiler solo informará la pantalla activa (no estoy cerca de un MBP para saber), ¿qué hay de conectar esto en GeekTool:

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

Editar:

Si enumera el no activo en la misma línea que "pantalla no conectada", ¿qué tal?

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

Si enumera el activo primero, ¿qué tal:

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

Si activo es el segundo, reemplace la cabeza con la cola.

ridogi
fuente
¿Por qué sustituyes los dos puntos por espacios?
Daniel Pendergast
4

http://codykrieger.com/gfxCardStatus

Esta es una pequeña aplicación que reside en la barra y le brinda no solo la tarjeta en uso, sino también el control sobre cómo y cuándo cambiar la tarjeta. Por ejemplo, solo puede configurar la tarjeta gráfica integrada para que funcione con batería, etc.

SS Cheema
fuente
gfxCardStatus se ha actualizado para Mountain Lion y Retina MacBook Pro.
Slothbear
3

Utilizando la idea básica presentada en las otras dos respuestas, escribí los siguientes scripts para determinar si está utilizando la tarjeta de video "correcta" (Correcto = "en la batería y usando el 9400" o "en el adaptador de CA y usando el 9600")

No tengo idea de cuán frágiles son estos scripts ... se basan en datos específicos que aparecen en un orden particular en la lista system_profile ... pero este orden parece coherente en mi máquina. Colocándolo aquí para cualquiera que lo encuentre a través de Google.

Ruby: (requiere que se instale la 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ón:

# 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
fuente
2

Sé que esta pregunta es bastante antigua, pero para aquellos que todavía la encuentran, podría ser bueno saber que también hay otras opciones. Para las soluciones más simples, uno puede consultar GFXCheck , que es una aplicación simple que mostrará la tarjeta gráfica activa en el

micdah
fuente
2
o gfxcardStatus, que además le permite elegir cuál usar de forma manual o automática en función de su perfil de energía.
Robert S Ciaccio
2
En realidad, poco después de escribir esta publicación encontré gfxCardStatus y lo instalé en su lugar, mucho mejor. Tiene conmutación automática y una interfaz menos molesta.
micdah
¿Alguna vez descubriste cómo terminar la oración?
Fixer1234
1

No tengo uno de los nuevos MacBook Pros aquí, pero debería poder ver la tarjeta activa a través del Perfil del sistema. En el terminal solo use system_profilerpara ver la configuración del sistema:

Captura de pantalla del terminal

Bryan Schuetz
fuente
0

Puedes usar la gema de rubí active_gfxque escribí: https://github.com/ChaosCoder/active_gfx

active_gfx muestra la tarjeta gráfica actualmente en uso por su sistema macOS.

En lugar de pasar por la lista de procesos abiertos en el Monitor de actividad, esta herramienta escupe el chip de gráficos utilizado actualmente al consultar el system_profiler.

Como active_gfxes una gema de rubí, instálala a través de gem install active_gfx.

ChaosCoder
fuente