Product SiteDocumentation Site

Глава 11. Управление временем виртуальных машин KVM

KVM использует счетчик тактов процессора TSC (Time Stamp Counter). Некоторые процессоры не поддерживают постоянную частоту счетчика, что негативно скажется на работе виртуальных машин на основе KVM. Неточности могут привести к замедлению или, наоборот, ускорению работы сетевых приложений, что изменить скорость работы самой виртуальной машины.
Потенциальные проблемы, связанные с неточностью часов и счетчиков процессора:
Эти проблемы существуют и на других платформах виртуализации, поэтому настоятельно рекомендуется тестировать счетчики и часы.

NTP

В размещающей и гостевых системах должен быть активен сетевой протокол NTP (Network Time Protocol). Команда запуска:
# service ntpd start

Добавьте службу ntpd в последовательность загрузки:
# chkconfig ntpd on

В большинстве случаев служба ntpd поможет минимизировать последствия расхождения часов.
Определение наличия постоянного счетчика TSC
Наличие постоянного счетчика TSC подтверждается флагом constant_tsc. Чтобы узнать, есть ли флаг constant_tsc:
$ cat /proc/cpuinfo | grep constant_tsc

Непустой вывод команды подтверждает наличие бита constant_tsc. Если же вывод пуст, обратитесь к приведенным ниже инструкциям.
Настройка узлов без постоянного счетчика TSC
Для процессоров, не поддерживающих постоянную частоту счетчика TSC, потребуется дополнительная настройка. Возможности управления питанием для виртуальных машин потребуется отключить, так как они отрицательно сказываются на синхронизации времени с KVM.

Note

Эти инструкции применимы только для процессоров AMD F.
If the CPU lacks the constant_tsc bit, disable all power management features (BZ#513138). Each system has several timers it uses to keep time. The TSC is not stable on the host, which is sometimes caused by cpufreq changes, deep C state, or migration to a host with a faster TSC. To stop deep C states, which cam stop the TSC, add "processor.max_cstate=1" to the kernel boot options in grub on the host:
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
Отключите cpufreq (только если отсутствует бит constant_tsc). Для этого в файле /etc/sysconfig/cpuspeed измените значения переменных MIN_SPEED и MAX_SPEED на максимально возможное значение частоты. Диапазоны частот можно найти в файлах /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies.
Использование паравиртуализированных часов в гостевых системах Red Hat Enterprise Linux
В некоторых гостевых системах Red Hat Enterprise Linux потребуется настроить дополнительные параметры ядра. Их можно добавить в конец строки /kernel файла /boot/grub/grub.conf, расположенного в гостевой системе.
Приведенная ниже таблица содержит перечень версий Red Hat Enterprise Linux и параметров ядра, необходимых для виртуальных машин в системах, не поддерживающих постоянную частоту счетчика TSC.
Red Hat Enterprise LinuxДополнительные параметры ядра виртуальной машины
5.4 AMD64/Intel 64 с паравиртуализированными часамиДополнительные параметры не нужны
5.4 AMD64/Intel 64 без паравиртуализированных часовdivider=10 notsc lpj=n
5.4 x86 с паравиртуализированными часамиДополнительные параметры не нужны
5.4 x86 без паравиртуализированных часовdivider=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Дополнительные параметры не нужны
3.9 x86Дополнительные параметры не нужны
Использование паравиртуализированных часов в гостевых системах Windows
Параметры загрузки Windows расположены в файле boot.ini. Следующий параметр позволяет использовать таймер PM-TIMER вместо счетчика TSC.
/use pmtimer

Дальнейшую информацию о параметрах загрузки Windows можно найти на странице Параметры, используемые в файле Boot.ini в Windows XP и Windows Server 2003.