Come verificare quale scheda video è attiva in un MacBook Pro?


14

C'è una grande differenza sia in termini di prestazioni che di consumo energetico tra le due schede video in un MacBook Pro.

Il problema è che spesso dimentico quale sto correndo. Questo può finire con una batteria scarica mentre sei su un aereo abbastanza rapidamente. Per quanto ne so, devi aprire la preferenza di sistema Risparmio energia per vedere quale è attivo.

Qualcuno sa di uno strumento che mostrerà (nella barra dei menu, sul desktop, qualunque cosa) il mio attuale stato della scheda video? Particolarmente buono sarebbe un comando terminale che segnalasse quale era attivo. Potrei usarlo come parte della mia configurazione di GeekTool.

Sono anche in grado di scrivere il mio strumento se qualcuno capisse dove nell'API avrei cercato queste informazioni.

Qualcuno ha qualche idea?

EDIT: Le risposte di seguito relative a system_profiler sono sicuramente un passo nella giusta direzione. L'MBP mostra le informazioni per ENTRAMBE le schede video, indipendentemente da quale sia attivo ... MA mostrerà "display non collegato" per il display collegato alla scheda inattiva. Io dovrei essere in grado di script di qualcosa che le cifre fuori da lì.

EDIT2: la chiave sta ottenendo l'output da system_profier nel formato xml (usando l'opzione -xml). Gli script sono di seguito per analizzare il plist risultante e visualizzare il risultato.

Risposte:


6

Supponendo che system_profiler segnalerà solo il display attivo (non sono vicino a un MBP per sapere) come collegarlo a GeekTool:

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

Modificare:

Se elenca quello non attivo sulla stessa riga di "display non connesso", che ne dici di:

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

Se elenca prima quello attivo, che ne dici di:

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

Se attivo è il secondo, sostituire la testa con la coda.


Perché sostituisci i due punti con gli spazi?
Daniel dice di reintegrare Monica il

4

http://codykrieger.com/gfxCardStatus

Questa è una piccola app che risiede nella barra e ti dà non solo la carta in uso ma anche il controllo su come e quando cambiare la carta. Ad esempio, è possibile impostare solo la scheda grafica integrata per l'esecuzione a batteria - ecc ...


gfxCardStatus è stato aggiornato per Mountain Lion e Retina MacBook Pro.
bradipo

3

Usando l'idea di base presentata nelle altre due risposte, ho scritto i seguenti script per determinare se stai usando la scheda video "corretta" (Corretto = "sulla batteria e usando il 9400" o "sull'adattatore CA e usando il 9600")

Non ho idea di quanto siano fragili questi script ... si basano su dati specifici che compaiono in un ordine particolare nel plist di system_profile ... ma questo ordine sembra coerente sulla mia macchina. Inserendolo qui per chiunque lo trovi tramite Google.

Ruby: (richiede l'installazione della gemma "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)

Pitone:

# 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)

2

So che questa domanda è piuttosto vecchia - ma per coloro che ancora inciampano su di essa, potrebbe essere bello sapere che ci sono anche altre scelte. Per le soluzioni più semplici, si potrebbe dare un'occhiata a GFXCheck , che è una semplice applicazione che mostrerà la scheda grafica attiva nel


2
o gfxcardStatus, che consente inoltre di scegliere quale utilizzare manualmente o automaticamente in base al proprio profilo di potenza.
Robert S Ciaccio,

2
In realtà, poco dopo aver scritto questo post ho trovato gfxCardStatus e l'ho installato invece - molto meglio. Ha la commutazione automatica e un'interfaccia meno fastidiosa.
micdah,

Hai mai capito come porre fine alla frase?
fixer1234

1

Non ho uno dei nuovi MacBook Pro qui, ma dovresti essere in grado di vedere la scheda attiva tramite System Profiler. Nel terminale basta usare system_profilerper vedere la configurazione del sistema:

Screenshot del terminale


0

Puoi usare la gemma rubino che active_gfxho scritto: https://github.com/ChaosCoder/active_gfx

active_gfx mostra la scheda grafica attualmente in uso dal tuo sistema macOS.

Invece di esaminare l'elenco dei processi aperti in Activity Monitor, questo strumento sputa il chip grafico attualmente utilizzato eseguendo una query su system_profiler.

Come active_gfxè una gemma rubino, installalo via gem install active_gfx.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.