web-dev-qa-db-fra.com

Comment vérifier quelle carte vidéo est active dans un MacBook Pro?

Il y a une grande différence dans la performance et la consommation d'énergie entre les deux cartes vidéo dans un MacBook Pro.

Le problème est que j'oublie souvent lequel je suis en cours d'exécution. Cela peut se retrouver avec une batterie morte lors d'un avion assez rapidement. Pour autant que je sache, vous devez ouvrir la préférence du système d'économie d'énergie pour voir lequel est actif.

Est-ce que quelqu'un connaît un outil qui affichera (dans la barre de menus, sur le bureau, quoi que ce soit) mon statut de carte vidéo actuelle? Particulièrement bon serait un commandement de terminal qui signalerait lequel une était active. Je pourrais l'utiliser dans le cadre de ma configuration de GeekTool.

Je suis également capable d'écrire mon propre outil si quelqu'un arrive à savoir où dans l'API, je rechercherais ces informations.

Quelqu'un a des idées?

Edit : Les réponses ci-dessous concernant System_Profiler sont définitivement une étape dans la bonne direction. Le MBP affiche des informations pour les deux cartes vidéo, quelle que soit leur activité active ... mais montrera "l'affichage non connecté" pour l'affichage connecté à la carte inactive. I devrait être capable de script quelque chose qui le chiffre de là.

Edit2 : La clé obtient la sortie de System_Profier au format XML (à l'aide du commutateur -XML). Les scripts sont ci-dessous pour analyser le plat résultant et afficher le résultat.

14
mmc

Utilisation de l'idée de base présentée dans les deux autres réponses, j'ai écrit les scripts suivants pour déterminer si vous utilisez la carte vidéo "correcte" (corrige = "sur la batterie et à l'aide de l'adaptateur secteur 9400" ou "sur l'adaptateur secteur et à l'aide de 9600").

Je ne sais pas à quel point ces scripts sont fragiles ... Ils s'appuient sur des données spécifiques figurant dans un ordre particulier dans la plate System_Profile ... mais cette commande semble cohérente sur ma machine. Placer ici pour tous ceux qui trouvent cela via Google.

Ruby: (Nécessite le gem "Plist" à installer

# 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

En supposant que System_Profiler ne signalera que l'affichage actif (je ne suis pas proche d'un MBP pour savoir) que diriez-vous de le brancher dans GeekTool:

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

Éditer:

S'il répertorie le non actif sur la même ligne que "Affichage non connecté" Que diriez-vous:

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

S'il répertorie l'actif d'abord, comment diriez-vous:

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

Si actif est seconde, remplacez la tête avec la queue.

6
ridogi

Je n'ai pas l'un des nouveaux pros ici, mais vous devriez pouvoir voir la carte active via le profileur système. Dans le terminal, il suffit d'utiliser system_profiler Pour voir la configuration du système:

Terminal Screenshot

1
Bryan Schuetz