Product SiteDocumentation Site

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:
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.
Feststellen, ob Ihre CPU über den konstanten Time Stamp Counter verfügt
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.
Konfiguration von Hosts ohne konstanten Time Stamp Counter
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.
Verwendung der paravirtualisierten Systemuhr mit Red Hat Enterprise Linux Gästen
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 LinuxZusätzliche Kernel-Parameter für den Gast
5.4 AMD64/Intel 64 mit der paravirtualisierten UhrZusätzliche Parameter nicht notwendig
5.4 AMD64/Intel 64 ohne die paravirtualisierte Uhrdivider=10 notsc lpj=n
5.4 x86 mit der paravirtualisierten Uhr Zusätzliche Parameter nicht notwendig
5.4 x86 ohne die paravirtualisierte Uhrdivider=10 clocksource=acpi_pm lpj=n
5.3 AMD64/Intel 64divider=10 notsc
5.3 x86divider=10 clocksource=acpi_pm
4.8 AMD64/Intel 64notsc divider=10
4.8 x86clock=pmtmr divider=10
3.9 AMD64/Intel 64 Zusätzliche Parameter nicht notwendig
3.9 x86Zusätzliche Parameter nicht notwendig
Verwenden der paravirtualisierten Uhr mit Windows-Gästen
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
Weitere Information über die Windows-Boot-Einstellungen und die pmtimer-Option finden Sie unter Verfügbare Befehlszeilenoptionen für die Boot.ini-Dateien von Windows XP und Windows Server 2003.