Kapitel 11. Zeitverwaltung bei KVM-Gästen
KVM verwendet die konstante Time Stamp Counter (TSC) Funktion in vielen modernen CPUs. Einige CPUs besitzen jedoch keinen konstanten Time Stamp Counter, was sich auf die Art und Weise auswirkt, wie Gäste unter KVM die Zeit messen. Gäste, die ohne genaue Zeitmessung laufen, können erhebliche Auswirkungen auf einige Netzwerkanwendungen haben, denn diese Gäste laufen schneller oder langsamer als die tatsächliche Zeit.
Mehrere Probleme können auftreten bei Gästen mit ungenauer Zeitmessung:
Systemuhren sind ggf. nicht mehr synchron mit der tatsächlichen Zeit, was Sitzungen ungültig macht und Auswirkungen auf Netzwerke hat.
Gäste mit langsameren Systemuhren haben ggf. Probleme mit der Migration.
Gäste können stoppen oder abstürzen.
Diese Probleme existieren ebenso auf anderen Virtualisierungsplattformen; die Zeitmessung sollte daher immer überprüft werden.
NTP
Der Network Time Protocol (NTP) Daemon sollte sowohl auf dem Host als auch auf dem Gast laufen. Aktivieren Sie den ntpd
-Dienst wie folgt:
# service ntpd start
Fügen Sie den ntpd-Dienst zur standardmäßigen Startup-Sequenz hinzu:
# chkconfig ntpd on
Die Verwendung des ntpd
-Dienstes sollte die Folgen der Zeitabweichung in jedem Fall minimieren.
Ihre CPU verfügt über den konstanten Time Stamp Counter, wenn das constant_tsc
-Flag vorhanden ist. Um festzustellen, ob Ihre CPU das constant_tsc
-Flag gesetzt hat, führen Sie den folgenden Befehl aus:
$ cat /proc/cpuinfo | grep constant_tsc
Wenn Sie eine Ausgabe erhalten, verfügt Ihre CPU über das constant_tsc
-Bit. Falls keinerlei Ausgabe erfolgt, folgen Sie den unten stehenden Anweisungen.
Systeme ohne konstanten Time Stamp Counter erfordern zusätzliche Konfiguration. Funktionen der Energieverwaltung behindern die genaue Zeitmessung und müssen deaktiviert werden, damit Gäste mit KVM die genaue Zeit messen können.
Note
Diese Anweisungen gelten ausschließlich für AMD Revision F CPUs.
Falls die CPU nicht über das
constant_tsc
-Bit verfügt, deaktivieren Sie sämtliche Funktionen zur Energieverwaltung (
BZ#513138). Jedes System hat mehrere Timer, die es zur Zeitmessung verwendet. Der TSC ist nicht stabil auf dem Host, was manchmal durch Änderungen an
cpufreq
verursacht werden kann, durch tiefen C-Status oder durch Migration auf einen Host mit einem schnelleren TSC. Um tiefe C-Stati, die den TSC anhalten können, zu vermeiden, fügen Sie auf dem Host "
processor.max_cstate=1
" zu den Boot-Optionen des Kernels in Grub hinzu:
term Fedora (vmlinuz-2.6.29.6-217.2.3.fc11)
root (hd0,0)
kernel /vmlinuz-vmlinuz-2.6.29.6-217.2.3.fc11 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
Deaktivieren Sie cpufreq
(nur nötig auf Hosts ohne constant_tsc
), indem Sie die Konfigurationsdatei /etc/sysconfig/cpuspeed
bearbeiten und die Variablen MIN_SPEED
und MAX_SPEED
auf die höchstmögliche Frequenz ändern. Zulässige Höchstgrenzen finden Sie in den /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
-Dateien.
Für bestimmte Red Hat Enterprise Linux Gäste sind zusätzliche Kernel-Parameter erforderlich. Diese Parameter können gesetzt werden, indem Sie an das Ende der /kernel-Zeile in der /boot/grub/grub.conf-Datei des Gasts angehängt werden.
Die Tabelle unten zeigt Red Hat Enterprise Linux Versionen und deren erforderliche Parameter für Gäste ohne konstanten Time Stamp Counter.
Red Hat Enterprise Linux | Zusätzliche Kernel-Parameter für den Gast |
---|
5.4 AMD64/Intel 64 mit der paravirtualisierten Uhr | Zusätzliche Parameter nicht notwendig |
5.4 AMD64/Intel 64 ohne die paravirtualisierte Uhr | divider=10 notsc lpj=n |
5.4 x86 mit der paravirtualisierten Uhr | Zusätzliche Parameter nicht notwendig |
5.4 x86 ohne die paravirtualisierte Uhr | divider=10 clocksource=acpi_pm lpj=n |
5.3 AMD64/Intel 64 | divider=10 notsc |
5.3 x86 | divider=10 clocksource=acpi_pm |
4.8 AMD64/Intel 64 | notsc divider=10 |
4.8 x86 | clock=pmtmr divider=10 |
3.9 AMD64/Intel 64 | Zusätzliche Parameter nicht notwendig |
3.9 x86 | Zusätzliche Parameter nicht notwendig |
Aktivieren Sie die paravirtualisierte Systemuhr auf Windows-Gästen durch Bearbeiten der Boot-Parameter. Die Windows-Boot-Einstellungen sind in der boot.ini-Datei gespeichert. Fügen Sie die folgende Zeile hinzu, um die paravirtualisierte Systemuhr zu aktivieren:
/use pmtimer