MacBook Pro 中的两款显卡在性能和功耗方面都存在很大差异。
问题是,我经常忘记自己在运行哪一个。这可能会导致在飞机上电池很快没电。据我所知,您必须打开“节能系统偏好设置”才能查看哪个处于活动状态。
有谁知道有什么工具可以显示(在菜单栏、桌面等)我当前的显卡状态吗?特别好的是有一个终端命令可以报告哪个显卡处于活动状态。我可以将其用作 GeekTool 设置的一部分。
如果有人碰巧知道我在 API 中的哪个位置可以查找此信息,我也可以编写自己的工具。
有人有主意吗?
编辑:以下关于 system_profiler 的回答无疑是朝着正确方向迈出的一步。MBP 显示两个显卡的信息,无论哪个处于活动状态……但对于连接到非活动卡的显示器,将显示“显示器未连接”。我应该能够编写一些脚本来解决问题。
编辑2:关键是获取 system_profier 的 xml 格式的输出(使用 -xml 开关)。下面的脚本用于解析生成的 plist 并显示结果。
答案1
假设 system_profiler 只会报告活动显示(我不在 MBP 附近所以不知道),如何将其插入 GeekTool:
system_profiler | grep GeForce | sed -e 's/:/ /'
编辑:
如果它在与“显示器未连接”相同的行上列出非活动的显示器,那么如何:
system_profiler | grep GeForce | grep - v "display not connected" | sed -e 's/:/ /'
如果它首先列出活动的一个,那么如何:
system_profiler | grep GeForce | head -n 1 | sed -e 's/:/ /'
如果活动是第二个,则用尾部替换头部。
答案2
http://codykrieger.com/gfxCardStatus
这是位于工具栏中的一款小应用程序,它不仅能让您查看正在使用的显卡,还能让您控制切换显卡的方式和时间。例如,您可以设置只有使用电池供电时才运行集成显卡 - 等等...
答案3
使用其他两个答案中提出的基本思想,我编写了以下脚本来确定您是否正在使用“正确的”视频卡(正确 = “使用电池并使用 9400”或“使用交流适配器并使用 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)
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)
答案4
我这里没有新款 MacBook Pro,但你应该能够通过系统分析器看到活动卡。在终端中,只需使用即可system_profiler
查看系统配置: