วิธีตรวจสอบการ์ดแสดงผลที่ทำงานอยู่ใน MacBook Pro


14

ประสิทธิภาพและการใช้พลังงานของการ์ดวิดีโอทั้งสองใน MacBook Pro มีความแตกต่างกันอย่างมาก

ปัญหาคือฉันมักจะลืมสิ่งที่ฉันกำลังทำงานอยู่ สิ่งนี้สามารถจบลงด้วยแบตเตอรี่ที่ตายในขณะที่อยู่บนเครื่องบินได้อย่างรวดเร็ว เท่าที่ฉันสามารถบอกได้คุณต้องเปิดการตั้งค่าระบบประหยัดพลังงานเพื่อดูว่าอันไหนเปิดใช้งานอยู่

มีใครรู้บ้างเกี่ยวกับเครื่องมือที่จะแสดง (ในแถบเมนูบนเดสก์ท็อปและอื่น ๆ ) สถานะการ์ดวิดีโอปัจจุบันของฉัน โดยเฉพาะอย่างยิ่งดีจะเป็นคำสั่งเทอร์มินัลที่จะรายงานว่าคำสั่งใดที่แอ็คทีฟ ฉันสามารถใช้สิ่งนั้นเป็นส่วนหนึ่งของการตั้งค่า GeekTool ของฉัน

ฉันยังสามารถเขียนเครื่องมือของตัวเองได้ถ้าใครรู้ว่าอยู่ที่ไหนใน API ฉันจะค้นหาข้อมูลนี้

ใครมีความคิดเห็นบ้าง

แก้ไข:คำตอบด้านล่างเกี่ยวกับ system_profiler เป็นขั้นตอนในทิศทางที่ถูกต้องแน่นอน MBP จะแสดงข้อมูลสำหรับการ์ดวิดีโอทั้งสองไม่ว่าจะมีการใช้งานที่ใดก็ตาม ... แต่จะแสดง "display not connected" สำหรับการแสดงผลที่แนบมากับการ์ดที่ไม่ได้ใช้งาน ฉันควรจะเขียนสคริปต์บางอย่างที่ทำให้เข้าใจได้

EDIT2:คีย์กำลังรับเอาต์พุตจาก system_profier ในรูปแบบ xml (โดยใช้สวิตช์ -xml) สคริปต์อยู่ด้านล่างเพื่อแยก plist ที่เป็นผลลัพธ์และแสดงผลลัพธ์

คำตอบ:


6

สมมติว่า system_profiler จะรายงานเฉพาะการแสดงผลที่ใช้งานอยู่ (ฉันไม่ได้อยู่ใกล้กับ MBP ที่จะทราบ) วิธีการเสียบเข้ากับ GeekTool:

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

แก้ไข:

หากมีรายการที่ไม่ทำงานอยู่ในบรรทัดเดียวกันกับ "display not connected" วิธีการเกี่ยวกับ:

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

หากมีการแสดงรายการที่ใช้งานครั้งแรกเกี่ยวกับ:

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

หากแอคทีฟเป็นวินาทีให้เปลี่ยนหัวด้วยหาง


ทำไมคุณต้องใช้โคลอนแทนช่องว่าง
แดเนียลพูดว่า Reinstate Monica

4

http://codykrieger.com/gfxCardStatus

นี่เป็นแอพเล็ก ๆ ที่อยู่ในแถบและไม่เพียง แต่ให้คุณใช้การ์ด แต่ยังควบคุมวิธีการและเวลาในการเปลี่ยนการ์ด ตัวอย่างเช่นคุณสามารถตั้งค่าเฉพาะกราฟิกการ์ดรวมให้ทำงานเมื่อใช้พลังงานแบตเตอรี่ - ฯลฯ ...


gfxCardStatus ได้รับการอัพเดตสำหรับ Mountain Lion และ Retina MacBook Pro
slothbear

3

ใช้แนวคิดพื้นฐานที่แสดงในอีกสองคำตอบฉันเขียนสคริปต์ต่อไปนี้เพื่อตรวจสอบว่าคุณใช้การ์ดวิดีโอ "ถูกต้อง" (ถูกต้อง = "ในแบตเตอรี่และใช้ 9400" หรือ "ในอะแดปเตอร์ ac และใช้ 9600")

ฉันไม่รู้ว่าสคริปต์เหล่านี้มีความเปราะบางอย่างไร ... พวกเขาใช้ข้อมูลเฉพาะที่ปรากฏตามลำดับเฉพาะในรายการ system_profile plist ... แต่คำสั่งนี้ดูเหมือนสอดคล้องกับเครื่องของฉัน วางไว้ที่นี่สำหรับทุกคนที่เคยพบสิ่งนี้ผ่าน Google

Ruby: (ต้องมีการติดตั้ง "Plist" gem)

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

งูหลาม:

# 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

ฉันรู้ว่าคำถามนี้ค่อนข้างเก่า - แต่สำหรับคนที่ยังคงสะดุดกับมันอาจเป็นการดีที่จะรู้ว่ามีทางเลือกอื่นเช่นกัน สำหรับโซลูชั่นที่ง่ายที่สุดเราสามารถตรวจสอบGFXCheckซึ่งเป็นแอพพลิเคชั่นที่ง่ายซึ่งจะแสดงกราฟิกการ์ดที่ใช้งานอยู่ใน


2
หรือ gfxcardStatus ซึ่งช่วยให้คุณสามารถเลือกได้ว่าจะใช้ด้วยตนเองหรืออัตโนมัติตามโปรไฟล์พลังงานของคุณ
Robert S Ciaccio

2
จริงๆแล้วไม่นานหลังจากเขียนโพสต์นี้ฉันพบ gfxCardStatus และติดตั้งแทนวิธีที่ดีกว่า มีการสลับอัตโนมัติและอินเทอร์เฟซที่น่ารำคาญน้อยกว่า
micdah

คุณเคยคิดออกว่าจะจบประโยคได้อย่างไร?
fixer1234

1

ฉันไม่มี MacBook Pros ตัวใหม่ที่นี่ แต่คุณควรจะเห็นการ์ดที่ใช้งานผ่าน System Profiler ในเทอร์มินัลใช้system_profilerเพื่อดูการกำหนดค่าระบบ:

หน้าจอเทอร์มินัล


0

คุณสามารถใช้พลอยทับทิมที่active_gfxฉันเขียน: https://github.com/ChaosCoder/active_gfx

active_gfx แสดงกราฟิกการ์ดที่ระบบ macOS ของคุณใช้อยู่ในปัจจุบัน

system_profilerแทนจะผ่านรายการของกระบวนการที่เปิดในกิจกรรมการตรวจสอบเครื่องมือนี้ถ่มน้ำลายออกกราฟิกชิปที่ใช้ในปัจจุบันโดยสอบถาม

ในฐานะที่เป็นอัญมณีทับทิมติดตั้งผ่านทางactive_gfxgem install active_gfx

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.