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.
В случае отсутствия бита constant_tsc отключите все возможности управления питанием (BZ#513138). Каждая система обладает несколькими таймерами, которые используются для синхронизации. В размещающей системе частота счетчика TSC может колебаться вследствие изменений cpufreq, перехода в Deep C-состояние или миграции на узел с более быстрым TSC. Для отключения Deep C-состояния остановите счетчик, добавьте processor.max_cstate=1 в строку параметров grub на узле:
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.