Zum Inhalt wechseln





Foto
- - - - -

[NVIDIA] HowTo - Patch AGPM.kext für G-States

Geschrieben von TimeBandit , 10 Januar 2014 · 5.192 Aufrufe

Diese Anleitung ist ein Step-by-Step Walkthrough für die AppleGraphicsPowerManagement.kext (kurz: AGPM)

Die AGPM hat die gleiche Funktion wie die AICPM (AppleIntelCPUPowerManagement.kext) und sorgt für das SpeedStepping der Grafikkarte unter OS X, sowohl bei Fermi als auch bei Kepler Grafikkarten. Das hat zum einen den Vorteil, dass der Stromverbrauch aber auch die Wärme- /Geräuschbelastung gesenkt werden kann. Wird die Power dann benötigt (Spiele, 3D-Anwendungen) wird die Grafikkarte ausgelastet und die AGPM schaltet sie automatisch auf Vollgas.

 
In meinem Fall patche ich die AGPM für eine EVGA GeForce GTX 660 SuperClocked Signature 2 mit 3GB Speicher.

Vorweg: Meine GTX 660 hat 4 G-States. Bei einigen NVIDIA-Karten kann es sein, dass diese nur 3 G-States haben...

 

Auf geht's! :herrin:
  • Als ersten navigieren wir zu System/Library/Extensions und kopieren die AppleGraphicsPowerManagement.kext auf den Desktop.
  • Rechtsklick -> Zeige Paketinhalt
  • Weiter geht's zu Contents/ und die Info.plist öffnen. Hier empfehle ich euch die App "TextWrangler" mit der ihr die Info.plist öffnen könnt.
Abhängig davon, was in eurer SMBios.plist steht, navigiert ihr zu eurem Modell. In meinem Fall ist es ein MacPro5,1. Daher suche ich folgende Codezeilen heraus:

</dict>
<key>MacPro5,1</key>
<dict>


Scrollt nun noch etwas weiter nach unten um die Einträge Threshold_Low und Threshold_High zu finden. Hier werden die G-States definiert!

:damatrix:

Voreingestellt sieht das dort etwa so aus:

<key>Threshold_High</key>
<array>
<integer>55</integer>
<integer>75</integer>
<integer>99</integer>
<integer>100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>0</integer>
<integer>87</integer>
<integer>87</integer>
<integer>87</integer>
</array>


Diese Werte ändern wir nun in folgendes:

<key>Threshold_High</key>
<array>
<integer>
30</integer>
<integer>
45</integer>
<integer>
75</integer>
<integer>
100</integer>
</array>
<key>Threshold_Low</key>
<array>
<integer>
0</integer>
<integer>
65</integer>
<integer>
87</integer>
<integer>
95</integer>
</array>


Was bedeutet das nun?

Das ist einfach erklärt:
 
Die <integer>x</integer> Werte stehen für die % der Grafikkarte im idle.

Ist die Grafikkarte nun von 95 bis 100% im idle, wechselt sie in die 3. State (Maximales Energie sparen)
75 bis 87% idle - State 2
45 bis 65% idle - State 1
0 bis 30% idle - State 0 (Maximale Leistung)

 

Um die G-States nun zu aktivieren, müssen wir noch eintragen, welche GPU wir haben. Das machen wir mit Hilfe der Vendor ID und der Device ID.

Geändert wird der Eintrag ein paar Zeilen weiter oben...:

<key>Vendor10deDevice0640</key>

...in das, was für uns passend ist. Bei meiner GTX 660 Ist die Vendor ID "10de" und die Device ID "11c0".

<key>Vendor10deDevice11c0</key>

(Vorerst) Fertig!
 

Scrollen wir noch einmal etwas weiter nach unten, finden wir noch folgenden Eintrag:

<key>LogControl</key>
<integer>0</integer>

Setzen wir dort die 0 auf 1, wird das wechseln der G-States auch in der Konsole geloggt. Ein muss, um zu testen, ob alles richtig funktioniert!:


<key>LogControl</key>
<integer>1</integer>
 

Wir sind nun mit dem bearbeiten der Info.plist fertig!
  • Info.plist speichern
  • mit Kext Wizard wieder in S/L/E installieren
  • Rechte fixen, Cache neu erstellen
  • Reboot!
Nach dem Reboot können wir gleich in die Konsole schauen.

Ladet am besten das Tool GpuTest und startet einen Benchmark.. -> Gibt's hier

Öffnet die Konsole, und gebt in der Suche einfach "AGPM" ein. Startet dann den Benchmark und beobachtet, ob sich die States ändern.

Wenn alles wunderbar klappt sieht das dann so aus:

Eingefügtes Bild

Ein ziemliches durcheinander für den Anfang...

Wichtig hierbei sind aber nur folgende Einträge:

01:40:23 kernel[0]: AGPM: GPU = PEGP G-state set to 2 from 3, ControlID = 18
01:41:13 kernel[0]: AGPM: GPU =
PEGP G-state set to 0 from 2, ControlID = 18
01:41:48 kernel[0]: AGPM: GPU =
PEGP G-state set to 1 from 0, ControlID = 18
01:41:53 kernel[0]: AGPM: GPU =
PEGP G-state set to 2 from 1, ControlID = 18
01:41:58 kernel[0]: AGPM: GPU = PEGP G-state set to 3 from 2, ControlID = 18


Die Grafikkarte wird also von State 3 (Energiesparen) in den State 1 (Maximale Leistung) geholt.
Kurz darauf (ja, Benchmark war nur ganz kurz an :D ) wird die Graka dann wieder in den Energiesparmodus (State 3) geschickt.
:spock:

Damit sind wir durch, und das SpeedStepping unserer Grafikkarte läuft nun wunderbar und gefahrlos!!

Viel Spaß & viel Erfolg beim selber patchen!!

:rootie:

  • eisdrachen gefällt das



Juni 2023

S M D M D F S
    123
4567 8 910
11121314151617
18192021222324
252627282930 

Neueste Einträge