Ich habe einen Weg gefunden, auf einfache Weise das zu tun, was der Titel in einer CLI-Umgebung sagt. Machen Sie sich also eine Notiz
`/ dev / cpu / * / msr``` nicht existiert, laden Sie es mit
`` modprobe msr```sudo rdmsr 0x198 -u --bitfield 47:32
awk "BEGIN { print $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192 }"
bc
Aber es ist okay,awk
Ich denke das ist definitiv installiert.
watch -n 1 'awk "BEGIN { print $(sudo rdmsr 0x198 -u --bitfield 47:32)/8192 }"'
Die Adresse 0x198 des MSR-Registers (Model Specific Register) der CPU heißt `MSR_PERF_STATUS``` und die Kernspannung wird in Bit [47:32] gespeichert. Lesen Sie dies mit dem Befehl
`rdmsr``` und konvertieren Sie es zur besseren Lesbarkeit.
Nach dem Handbuch
P-state core voltage can be computed by MSR_PERF_STATUS[37:32] * (float) 1/(2^13).
Also dividiere ich den Lesewert durch 8192. (↑ [37:32], aber vielleicht ein Fehler)
Die Definition des [47:32] -Bits dieses Registers ist jedoch nur in Tabelle 2-20 von Sandy Bridge enthalten, und es gibt keine Beschreibung für andere Generationen. Gemäß dem Handbuch ist MSR_hoge für jede Generation definiert und kann daher überschrieben werden. Tatsächlich haben in der Core-Generation (wie core2duo) die Bits [46, 44: 40] unterschiedliche Definitionen.
Ich habe untersucht, ob der Wert beim Lesen mit einer CPU der Generation nach Sandy Bridge garantiert ist, war mir aber nicht sicher, da die Interpretation fehlerhaft war. Es gibt jedoch keine Überschreibdefinition. Ich kann diese Art von Wert auf meinem Kaby Lake lesen.
Bitte lassen Sie mich wissen, ob es eine zuverlässigere Methode gibt.
Recommended Posts