29.12.2010

Выравнивание (не синхронизация!) времени на гостевых машинах

Передо мной сервер с Debian Lenny. На нем крутится VMware Server 1. Одна из гостевых машин - Windows Server 2003. Время на Debian идет ровненько. Время на Windows торопится почти вдвое.
Для начала экспериментировал с настройками VMware. Там много не накрутить: в конфиге машины только tools.syncTime = "TRUE", а внутри операционной системы только галочка на утилитке VMware Tools. Результат плачевный: да, время действительно синхронизируется. Но это не значит, что оно стало бежать медленнее. Это значит, что раз в заданный промежуток времени его откидывает рывком назад. При этом у приложения, которое крутится на Windows возникает философская проблема: У него на часах было 17:28. Оно получило пакет на отправку. Пока оно его готовило, прошла синхронизация и время было откатано на реальные 17:21. Программа подготовила пакет и ставит новый штамп времени: 17:22... и перед ним встает дилема - как же так, я получила его в будущем?
Нашел хорошие статьи:
Timekeeping best practices for Windows
W32Time\Subkey
И статья, в которой досканально расписаны происходящие процессы:
Timekeeping in VirtualMachines



А вот здесь описаны настоящие причины подобных сбоев. Это технологии, связанные с ограничением частоты работы процессора ради снижения энергопотребления (Intel SpeedStep, AMD Cool'n'Quiet):
Host Power Management Causes Problems with Guest Timekeeping on Linux Hosts




Комментариев нет:

Отправить комментарий