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

14

Il existe une grande différence en termes de performances et de consommation d'énergie entre les deux cartes vidéo d'un MacBook Pro.

Le problème est que j'oublie souvent celui que je dirige. Cela peut se retrouver avec une batterie morte dans un avion assez rapidement. Autant que je sache, vous devez ouvrir la préférence Système d'économie d'énergie pour voir laquelle est active.

Quelqu'un connaît-il un outil qui affichera (dans la barre de menus, sur le bureau, peu importe) l'état actuel de ma carte vidéo? Une commande de terminal qui indiquerait laquelle était active serait particulièrement bonne. Je pourrais l'utiliser dans le cadre de ma configuration GeekTool.

Je suis également capable d'écrire mon propre outil si quelqu'un sait 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 un pas dans la bonne direction. Le MBP affiche des informations pour les DEUX cartes vidéo, quelle que soit celle qui est active ... MAIS affichera "écran non connecté" pour l'écran connecté à la carte inactive. Je devrais être capable de scénariser quelque chose qui le comprend à partir de là.

EDIT2: La clé obtient la sortie de system_profier au format xml (en utilisant le commutateur -xml). Les scripts sont ci-dessous pour analyser le plist résultant et afficher le résultat.

mmc
la source

Réponses:

6

En supposant que system_profiler ne signalera que l'affichage actif (je ne suis pas près d'un MBP pour savoir), que diriez-vous de brancher cela dans GeekTool:

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

Éditer:

S'il répertorie celui qui n'est pas 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 en premier, que diriez-vous:

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

Si actif est deuxième, remplacez la tête par la queue.

ridogi
la source
Pourquoi remplacez-vous les deux-points par des espaces?
Daniel dit Réintégrer Monica
4

http://codykrieger.com/gfxCardStatus

Il s'agit d'une petite application qui réside dans la barre et vous donne non seulement la carte utilisée mais également le contrôle sur la façon et le moment de changer de carte. Par exemple, vous pouvez configurer uniquement la carte graphique intégrée pour qu'elle s'exécute sur batterie - etc ...

SS Cheema
la source
gfxCardStatus a été mis à jour pour Mountain Lion et Retina MacBook Pro.
slothbear
3

En utilisant 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" (Correct = "sur batterie et en utilisant le 9400" ou "sur l'adaptateur secteur et en utilisant le 9600")

Je n'ai aucune idée de la fragilité de ces scripts ... ils reposent sur des données spécifiques apparaissant dans un ordre particulier dans le plist system_profile ... mais cet ordre semble cohérent sur ma machine. Le placer ici pour quiconque trouve cela via Google.

Ruby: (nécessite l'installation de la gemme "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)
mmc
la source
2

Je sais que cette question est assez ancienne - mais pour ceux qui y trébuchent encore, il serait peut-être bon de savoir qu'il existe également d'autres choix. Pour les solutions les plus simples, on pourrait consulter GFXCheck , qui est une application simple qui montrera la carte graphique active dans le

micdah
la source
2
ou gfxcardStatus, qui vous permet également de choisir celui à utiliser manuellement ou automatiquement en fonction de votre profil de puissance.
Robert S Ciaccio
2
En fait, peu de temps après avoir écrit ce billet, j'ai trouvé gfxCardStatus et l'ai installé à la place - bien mieux. A une commutation automatique et une interface moins ennuyeuse.
micdah
Avez-vous déjà compris comment mettre fin à la phrase?
fixer1234
1

Je n'ai pas l'un des nouveaux MacBook Pros ici, mais vous devriez pouvoir voir la carte active via le System Profiler. Dans le terminal, utilisez simplement system_profilerpour voir la configuration du système:

Capture d'écran du terminal

Bryan Schuetz
la source
0

Vous pouvez utiliser le joyau rubis que active_gfxj'ai écrit: https://github.com/ChaosCoder/active_gfx

active_gfx affiche la carte graphique actuellement utilisée par votre système macOS.

Au lieu de parcourir la liste des processus ouverts dans Activity Monitor, cet outil crache la puce graphique actuellement utilisée en interrogeant le system_profiler.

Comme active_gfxc'est un bijou rubis, installez-le via gem install active_gfx.

ChaosCoder
la source