Vor einiger Zeit ist mir schon aufgefallen, dass Linux auf eine Veränderung des TSC-Registers sehr "empfindlich" reagiert.
Dieses Register wird ja üblicherweise mit "rdtsc" gelesen, ist aber als MSR realisiert und kann daher auch mit "rdmsr" gelesen und mit "wrmsr" auch geändert werden. Der Index für dieses Register ist 0x10, also kann man bei Linux auf der Kommandozeile sowas wie "wrmsr 0x10 0x..........." machen.
Ich würde ja naiv erwarten, dass sich damit einfach nur die Systemzeit verändert. Tatsächlich passieren aber sehr interessante Dinge, wie ich jetzt ein bisschen systematischer vertestet habe. Es hängt auch ein wenig davon ab, welche "Clocksource" in Linux ausgewählt ist.
Also, ich erhöhe den Wert von TSC und es ist auch tatsächlich "tsc" als Clocksource ausgewählt. Dann springt die System-Zeit tatsächlich in die Zukunft, aber das System verhält sich von da an seltsam, was das Timing angeht - komische Responsezeiten usw. Muss ich noch etwas näher untersuchen.
Bei anderen Clocksources, u.a. bei "xen" in eben einer Xen-VM passiert auch was Interessantes: Das System "friert" für die angegebene Zeit ein (führt auch keine Timer-Interrupts mehr aus) und danach hat es wieder die korrekte Uhrzeit...
Meine Frage: Ist eine Manipulation am TSC-MSR ein generelles No-Go und wenn ja, warum? Oder ist es nur Linux, was empfindlich darauf reagiert? Auch hier: Warum?
Dieses Register wird ja üblicherweise mit "rdtsc" gelesen, ist aber als MSR realisiert und kann daher auch mit "rdmsr" gelesen und mit "wrmsr" auch geändert werden. Der Index für dieses Register ist 0x10, also kann man bei Linux auf der Kommandozeile sowas wie "wrmsr 0x10 0x..........." machen.
Ich würde ja naiv erwarten, dass sich damit einfach nur die Systemzeit verändert. Tatsächlich passieren aber sehr interessante Dinge, wie ich jetzt ein bisschen systematischer vertestet habe. Es hängt auch ein wenig davon ab, welche "Clocksource" in Linux ausgewählt ist.
Also, ich erhöhe den Wert von TSC und es ist auch tatsächlich "tsc" als Clocksource ausgewählt. Dann springt die System-Zeit tatsächlich in die Zukunft, aber das System verhält sich von da an seltsam, was das Timing angeht - komische Responsezeiten usw. Muss ich noch etwas näher untersuchen.
Bei anderen Clocksources, u.a. bei "xen" in eben einer Xen-VM passiert auch was Interessantes: Das System "friert" für die angegebene Zeit ein (führt auch keine Timer-Interrupts mehr aus) und danach hat es wieder die korrekte Uhrzeit...
Meine Frage: Ist eine Manipulation am TSC-MSR ein generelles No-Go und wenn ja, warum? Oder ist es nur Linux, was empfindlich darauf reagiert? Auch hier: Warum?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
