如何检查 MacBook Pro 中哪个显卡处于活动状态?

如何检查 MacBook Pro 中哪个显卡处于活动状态?

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查看系统配置:

终端截图

相关内容