Zweck: Das ist eine Menge verschiedene Beitrag als einige der Beitrag in diesem Blog. Dies ist eine sehr spezifische Beitrag, dass vielleicht nur sehr wenige Menschen könnten mit dieser in ihrer täglichen Arbeit. Aber trotzdem dachte ich, es wäre zumindest nützlich für jene "paar" Menschen sein. Unterschätzen Sie nicht diese Aufgabe nur, weil nur sehr wenige Menschen finden könnte dies nützlich sein. In der Tat Menschen, die diese Tools verwenden haben, sind sehr fähige Ingenieure, die Low-Level-Hardware im Detail zu verstehen. Also lasst uns loslegen ...

Was lernen wir?

Wir werden lernen, wie man lesen und schreiben CPU MSRs. MSR steht für "Model Specific Registers" oder "Machine Specific Registers". Wer MSR schreiben können muss höchste System-Privilegien zu tun. Grundsätzlich von Lesen und Schreiben von MSR, sind Sie mit Ihrer CPU Umgang mit einer sehr direkten Ebene. Grundsätzlich können Sie ändern Ihr Verhalten CPU mit Hilfe dieser Werkzeuge. Grundsätzlich sind diese Register Daten speichern und die Einstellung für die CPU. Die Adressen und Definition dieser Register kann von einer CPU-Generation zur anderen zu wechseln.

Bitte beachten Sie auch, dass das Spiel (vor allem) schriftlich an Ihre CPU MSR kann, um mögliche Schäden an Ihrem System / CPU führen. Sie wurden gewarnt!

Schritt 1: Download MSR

Debian hat den msr-tools -Paket, das im Grunde enthält zwei Programme:

RDMSR zum Lesen

WRMSR zum Schreiben

# apt-get update
# apt-get install msr-tools

Wenn Ihre Distribution kein msr-tools, dann können Sie downloaden von Linux-Kernel-Baum auch.

Schritt 2: Compile kernel MSR-Modul

Die oben genannten User-Space-Werkzeuge hängen von der "msr" Kernel-Modul. Stellen Sie sicher, dass Ihre Linux-Kernel hat die "msr" Modul kompiliert:

debian:/home/kushalk# cat /boot/config-2.6.29-2-686 | grep MSR
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_X86_MSR=m (or y)
CONFIG_SCSI_ARCMSR=m
# CONFIG_SCSI_ARCMSR_AER is not set
debian:/home/kushalk#

Wenn Ihr CONFIG_X86_MSR ist nicht auf entweder "m" oder "y" gesetzt ist, dann müssen Sie neu kompilieren eigenen Kernels, nach Einstellung auf "y" oder "m".

Schritt 3: Load "msr"-Modul


Sie müssen sicherstellen, dass der Kernel "msr" Modul geladen wird, bevor Sie beginnen können mit RDMSR und WRMSR anderen werden Sie die folgende Fehlermeldung erhalten:

debian:/home/kushalk# rdmsr 0x198
rdmsr:open: No such file or directory

Sie können die "msr"-Modul mit dem folgenden Befehl laden:

# modprobe msr

Eine weitere Möglichkeit, wirklich überprüfen können, ob unsere "msr"-Modul geladen wird oder nicht, ist, indem Sie für folgende Verzeichnisse:

debian:/home/kushalk# ls /dev/cpu/0/msr
/dev/cpu/0/msr

Schritt 4: Lesen und schreiben MSR

Sobald Sie laden das "msr"-Modul können Sie lesen Werte aus dem CPU-Register wie folgt aus:

# rdmsr 0x198

Output:

6120d2606000612

Grundsätzlich sind Sie liest den Wert aus dem Register-Nummer 198. Sie müssen Ihre CPU / Architektur Handbuch zu konsultieren, um die Definition von jedem dieser Register, um die Ausgabe zu interpretieren sehen. Soweit ich weiß, sagt die oben Registernummer, 0 × 198, die maximale Frequenz Ihrer CPU unterstützt und die Frequenz, mit der die CPU gerade läuft an.

Wenn Sie Multi-Prozessor-System haben, dann können Sie die CPU-Nummer auch wie folgt aus:

# rdmsr -p1 0x198

Standardmäßig verwendet er die "-p0" Option, dh, Ihre erste CPU.

Ebenso können Sie Werte schreiben MSR wie folgt aus:

# wrmsr 0x198 <value>

Für weitere Informationen lesen Sie die man-Seiten:

# man rdmsr
# man wrmsr

Beachten Sie auch, dass die oben gilt für Intel-Prozessoren ist. Wenn Sie mit AMD-Prozessor werden dann der obige Befehl nicht funktioniert (Register 0 × 198).

Glückliche MSR'ing!

Kontaktfreudig sein, Share!