- 积分
- 35
- 最后登录
- 2019-11-25
- 精华
- 0
- 阅读权限
- 10
- 主题
- 5
- UID
- 2587986
- 帖子
- 87
- PB币
- 153
- 威望
- 0
- 贡献
- 0
- 技术
- 15
- 活跃
- 4
- UID
- 2587986
- 帖子
- 87
- PB币
- 153
- 贡献
- 0
- 技术
- 15
- 活跃
- 4
|
本帖最后由 lenius1 于 2013-10-22 15:22 编辑
在修改AGPM(AppleGraphicsPowerManagement)实现显卡变频的过程中,难免会涉及到对几个Threshold参数的设置。对于N卡而言,目前主要的思路是通过尝试不同的设置来确定最适合的参数,而目前坛子中对于该参数的设置原则似乎并没有过多介绍(另外不明白为何置顶贴中那个关于AGPM的帖子要20的权限…),这里提供一些自己在“折腾”过程中积累的思路,希望能帮到有需要的朋友。不过自己也是个新手,这些也只是自己的初步理解,希望大家多多跟帖探讨。
先说一下在何种情况下可能需要修改AGPM:
- 希望实现更好的显卡电源管理功能。对笔记本来说有可能获得更长的待机时间,而台式机来也可以减少不必要的电量消耗而不明显降低性能。
- 减少或解决由显卡变频引起的系统不稳定问题。典型的例子是Fermi核心显卡在10.8.x中的假死问题。(本人显卡不幸就是Fermi核心的GTS450)
基本概念——显卡的电源状态
- 可以简单理解为显卡处理能力的几个档位,分别对应不同的电源消耗。对于某个特定型号的显卡而言,这个档位是固定不变的,由硬件本身决定。例如:
- 有些N卡包括4个电源状态,分别为G-State 0到3,其中G-State 0为最高性能,对应最大电源消耗,G-State 3则为最低性能对应最低电源消耗; 有些则包括3个,例如GTX 570或GTX 580. 此时G-State 0是无效的,最高性能为G-State 1.
- 显卡状态G-State的域值(Threashold)在AGPM文件中表示显卡的空闲百分比,而非负载百分比。
修改实例(为引文中的实例,原文点此,需跳墙):
- 显卡型号:GTX580。
- 修改背景:实测GTX 580在G-State 3下只消耗5W的功率,但性能太差导致系统运行卡顿。因此我们希望GTX 580基本上不进入G3状态,在低负载下也维持在G2状态从而保证系统的流畅,在较高负载时则进入最大性能的G1状态。
- 开始之前,确认当前的系统定义可以加载AGPM,例如MacPro5,1。如果不是,可通过MultiBeast或Chameleon Wizard方便地修改为MacPro5,1,然后删掉S\L\E下的AppleTyMCEDriver.kext(否则可能无法启动)。
- 到System\Library\Extensions下找到AppleGraphicsPowerManagement.kext,将其复制到桌面(否则可能会无法编辑)。
- 右键点击桌面上AppleGraphicsPowerManagement.kext,显示包内容。
- 打开Contents目录中的Info.plist(使用文本编辑即可)。
- 使用查找功能找到对应的版本部分,本例为:
- </dict>
- <key>MacPro5,1</key>
- <dict>
复制代码
- 将<key>Vendor10deDevice05e2</key>中的05e2改为你的GPU设备ID后四位(在系统报告->PCI卡中找到的设备ID,例如查到的Device ID为0x1200,那么文件中就改为<key>Vendor10deDevice1200</key>
- 将Threshold_High的四个数值由上至下依次改为0,45,75,100,改后见下:
- <key>Threshold_High</key>
- <array>
- <integer>0</integer>
- <integer>45</integer>
- <integer>75</integer>
- <integer>100</integer>
- </array>
复制代码
- 同样,将Threshold_High的四个数值由上至下依次改为0,0,87,98,改后见下:
- <key>Threshold_Low</key>
- <array>
- <integer>0</integer>
- <integer>0</integer>
- <integer>87</integer>
- <integer>98</integer>
- </array>
复制代码
- 上述数值的含义(可能很多人更关心这个):
以GPU的空闲百分比计算:
A. 功率上行域值(对应Threshold_High)
100 - 75 = state 3
75 - 45 = state 2
45 - 0 = state 1
0 - 0 = state 1
B. 功率下行域值(对应Threshold_High)
0 - 0 = state 1
0 - 87 = state 1
87 - 98 = state 2
98 - 100 = state 3
也就是说,性能从G3提升到G2状态时要求GPU空闲在100-75%之间(即负载超过25%时),从G2提升到G1状态时要求GPU空闲低于45%(即负载超过55%时)。而从G1状态回落到G2状态时要求GPU空闲必须达到87%(即负载低于13%),从G2回落到G3时要求GPU空闲必须大于98%(负载低于2%)。具体可以见下图(老外画的),很直观
- 保存修改,并使用kext wizard将修改后的kext安装回S\L\E目录,重启系统即可生效。
|
|