Bagaimana cara memeriksa kartu video mana yang aktif di MacBook Pro?

14

Ada perbedaan besar dalam kinerja dan konsumsi daya antara dua kartu video dalam MacBook Pro.

Masalahnya, saya sering lupa yang mana saya jalankan. Ini bisa berakhir dengan baterai mati saat di pesawat cukup cepat. Sejauh yang saya tahu, Anda harus membuka Preferensi Sistem Penghemat Energi untuk melihat mana yang aktif.

Apakah ada yang tahu alat yang akan menampilkan (di bilah menu, di desktop, apa pun) status kartu video saya saat ini? Yang sangat bagus adalah perintah terminal yang akan melaporkan mana yang aktif. Saya bisa menggunakannya sebagai bagian dari pengaturan GeekTool saya.

Saya juga mampu menulis alat sendiri jika ada yang tahu di mana di API saya akan mencari informasi ini.

Adakah yang punya ide?

EDIT: Jawaban di bawah ini mengenai system_profiler jelas merupakan langkah ke arah yang benar. MBP menunjukkan informasi untuk KEDUA kartu video, apa pun yang aktif ... TAPI akan menampilkan "tampilan tidak terhubung" untuk tampilan yang terpasang pada kartu tidak aktif. Saya harus bisa menulis sesuatu yang menggambarkannya dari sana.

EDIT2: Kuncinya adalah mendapatkan output dari system_profier dalam format xml (menggunakan -xml switch). Script di bawah ini untuk menguraikan plist yang dihasilkan dan menampilkan hasilnya.

mmc
sumber

Jawaban:

6

Dengan asumsi system_profiler hanya akan melaporkan tampilan aktif (saya tidak dekat MBP untuk mengetahui) bagaimana kalau menghubungkan ini ke GeekTool:

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

Edit:

Jika itu daftar yang tidak aktif pada baris yang sama dengan "display not connected" bagaimana dengan:

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

Jika sudah daftar yang aktif dulu bagaimana:

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

Jika aktif adalah yang kedua maka ganti kepala dengan ekor.

ridogi
sumber
Mengapa Anda mengganti titik dua dengan spasi?
Daniel berkata Reinstate Monica
4

http://codykrieger.com/gfxCardStatus

Ini adalah aplikasi kecil yang berada di bar dan memberi Anda tidak hanya kartu yang digunakan tetapi juga kontrol atas bagaimana dan kapan harus mengganti kartu. Misalnya, Anda hanya dapat mengatur kartu grafis terintegrasi untuk dijalankan saat menggunakan daya baterai - dll ...

SS Cheema
sumber
gfxCardStatus telah diperbarui untuk Mountain Lion dan Retina MacBook Pro.
slothbear
3

Menggunakan ide dasar yang disajikan dalam dua jawaban lainnya, saya menulis skrip berikut untuk menentukan apakah Anda menggunakan kartu video "benar" (Benar = "pada baterai dan menggunakan 9400" atau "pada adaptor ac dan menggunakan 9600")

Saya tidak tahu betapa rapuhnya skrip ini ... mereka bergantung pada data tertentu yang muncul dalam urutan tertentu di system_profile plist ... tetapi pesanan ini tampaknya konsisten pada mesin saya. Menempatkannya di sini untuk siapa saja yang pernah menemukan ini melalui Google.

Ruby: (membutuhkan permata "Plist" untuk diinstal)

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

Saya tahu bahwa pertanyaan ini agak lama - tetapi bagi mereka yang masih tersandung, mungkin menyenangkan mengetahui bahwa ada pilihan lain juga. Untuk solusi paling sederhana, orang dapat memeriksa GFXCheck , yang merupakan aplikasi sederhana yang akan menampilkan kartu grafis aktif di

mikha
sumber
2
atau gfxcardStatus, yang juga memungkinkan Anda memilih mana yang akan digunakan secara manual atau otomatis berdasarkan profil daya Anda.
Robert S Ciaccio
2
Sebenarnya, tak lama setelah menulis posting ini saya menemukan gfxCardStatus dan menginstalnya sebagai gantinya - jauh lebih baik. Memiliki peralihan otomatis dan antarmuka yang tidak terlalu mengganggu.
micdah
Apakah Anda pernah menemukan cara untuk mengakhiri kalimat?
fixer1234
1

Saya tidak memiliki salah satu MacBook Pro baru di sini, tetapi Anda harus dapat melihat Kartu aktif melalui System Profiler. Di terminal cukup gunakan system_profileruntuk melihat konfigurasi sistem:

Tangkapan Layar Terminal

Bryan Schuetz
sumber
0

Anda dapat menggunakan permata ruby ​​yang active_gfxsaya tulis: https://github.com/ChaosCoder/active_gfx

active_gfx menunjukkan kartu grafis yang saat ini digunakan oleh sistem macOS Anda.

Alih-alih menelusuri daftar proses terbuka di Activity Monitor, alat ini meludahkan chip grafis yang saat ini digunakan dengan menanyakan system_profiler.

Seperti active_gfxpermata ruby, instal via gem install active_gfx.

ChaosCoder
sumber