Wie überprüfe ich, welche Grafikkarte in einem MacBook Pro aktiv ist?

14

Die Leistung und der Stromverbrauch der beiden Grafikkarten in einem MacBook Pro unterscheiden sich erheblich.

Das Problem ist, ich vergesse oft, welches ich laufen. Dies kann dazu führen, dass die Batterie in einem Flugzeug ziemlich schnell leer ist. Soweit ich das beurteilen kann, müssen Sie die Systemeinstellung "Energie sparen" öffnen, um zu sehen, welche aktiv ist.

Kennt jemand ein Tool, das (in der Menüleiste, auf dem Desktop, was auch immer) meinen aktuellen Grafikkartenstatus anzeigt? Besonders gut wäre ein Terminalkommando, das meldet, welches aktiv ist. Ich könnte das als Teil meines GeekTool-Setups verwenden.

Ich bin auch in der Lage, mein eigenes Tool zu schreiben, wenn jemand zufällig weiß, wo in der API ich nach diesen Informationen suchen würde.

Hat jemand irgendwelche Ideen?

EDIT: Die folgenden Antworten in Bezug auf system_profiler sind definitiv ein Schritt in die richtige Richtung. Der MBP zeigt Informationen für BEIDE Grafikkarten an, unabhängig davon, welche aktiv ist. ABER für die Anzeige, die an die inaktive Karte angeschlossen ist, wird "Anzeige nicht angeschlossen" angezeigt. Ich sollte in der Lage sein, etwas zu schreiben, das es von dort herausfindet.

EDIT2: Der Schlüssel erhält die Ausgabe von system_profier im XML-Format (mit der Option -xml). Die folgenden Skripte analysieren die resultierende Liste und zeigen das Ergebnis an.

mmc
quelle

Antworten:

6

Angenommen, system_profiler meldet nur die aktive Anzeige (ich bin nicht in der Nähe eines MBP, um zu wissen), wie Sie dies in GeekTool einstecken:

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

Bearbeiten:

Wenn es das nicht aktive in der gleichen Zeile wie "Display nicht verbunden" auflistet, wie wäre es mit:

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

Wenn es das aktive zuerst auflistet, wie wäre es mit:

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

Wenn aktiv an zweiter Stelle steht, ersetzen Sie den Kopf durch den Schwanz.

ridogi
quelle
Warum ersetzen Sie Leerzeichen durch Doppelpunkte?
Daniel sagt Reinstate Monica
4

http://codykrieger.com/gfxCardStatus

Dies ist eine kleine App, die sich in der Leiste befindet und Ihnen nicht nur die verwendete Karte, sondern auch die Kontrolle darüber gibt, wie und wann die Karte gewechselt werden soll. Beispielsweise können Sie festlegen, dass nur die integrierte Grafikkarte im Akkubetrieb ausgeführt wird - usw.

SS Cheema
quelle
gfxCardStatus wurde für Mountain Lion und das Retina MacBook Pro aktualisiert.
Faultier
3

Unter Verwendung der Grundidee, die in den anderen beiden Antworten dargestellt wird, habe ich die folgenden Skripte geschrieben, um festzustellen, ob Sie die "richtige" Grafikkarte verwenden (Correct = "auf Batterie und mit dem 9400" oder "auf Netzteil und mit dem 9600").

Ich habe keine Ahnung, wie zerbrechlich diese Skripte sind ... sie basieren auf bestimmten Daten, die in einer bestimmten Reihenfolge in der system_profile-Liste angezeigt werden ... aber diese Reihenfolge scheint auf meinem Computer konsistent zu sein. Platzieren Sie es hier für jeden, der es jemals über Google findet.

Ruby: (setzt voraus, dass der Edelstein "Plist" installiert ist)

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

Ich weiß, dass diese Frage ziemlich alt ist - aber für diejenigen, die immer noch darauf stoßen, ist es vielleicht schön zu wissen, dass es auch andere Möglichkeiten gibt. Für die einfachsten Lösungen könnte man GFXCheck ausprobieren , eine einfache Anwendung, in der die aktive Grafikkarte angezeigt wird

Micdah
quelle
2
oder gfxcardStatus, mit dem Sie zusätzlich auswählen können, welche manuell oder automatisch basierend auf Ihrem Energieprofil verwendet werden soll.
Robert S Ciaccio
2
Kurz nach dem Schreiben dieses Beitrags habe ich gfxCardStatus gefunden und stattdessen installiert - viel besser. Verfügt über eine automatische Umschaltung und eine weniger störende Benutzeroberfläche.
Micdah
Hast du jemals herausgefunden, wie man den Satz beendet?
Fixer1234
1

Ich habe keinen der neuen MacBook Pros hier, aber Sie sollten die aktive Karte über den System Profiler sehen können. Im Terminal benutzen Sie einfach system_profiler, um die Systemkonfiguration zu sehen:

Terminal-Screenshot

Bryan Schütz
quelle
0

Sie können das Rubinjuwel verwenden, das active_gfxich geschrieben habe: https://github.com/ChaosCoder/active_gfx

active_gfx zeigt die Grafikkarte an, die derzeit von Ihrem macOS-System verwendet wird.

Anstatt die Liste der offenen Prozesse im Aktivitätsmonitor durchzugehen, spuckt dieses Tool den aktuell verwendeten Grafikchip aus, indem es den abfragt system_profiler.

Wie active_gfxein Rubinstein, installieren Sie es über gem install active_gfx.

ChaosCoder
quelle