VirtualBox - Проблемы с синхронизацией

Я получил VirtualBox, работающий на хосте Windows 7, с серверами Ubuntu и клиентами XP-SP3.

Часто я замечаю, что часы на гостевых машинах строго опаздывают по сравнению с временем хоста. Я впервые заметил это, когда получил странные результаты сравнительного анализа для всех видов тестов производительности, и предположил, что сравнение тестов на одной и той же машине с самими собой было бы в порядке, но это не так.

Ситуация усугубляется при вызове тестов клиент-сервер. Возможно, было бы приемлемо, если бы все гости сохраняли одинаковую задержку, но я сталкиваюсь с ситуациями, когда время на клиентах XP более продвинуто на серверах, и ситуация, когда время на серверах Ubuntu более продвинуто, чем на xp клиентов.

В некотором смысле я мог бы смириться с этим - потому что здесь представлены интересные тестовые примеры, - но иногда доходит до различий в 20 минут.

Я попытался возиться с конфигурацией безрезультатно - но я что-то упустил ...

Кто-нибудь? Заранее спасибо.


person Radagast the Brown    schedule 15.03.2011    source источник
comment
Вы пробовали настроить машины для использования сетевого сервера времени? Это может быть самый простой способ постоянно синхронизировать друг с другом.   -  person Cody Gray    schedule 15.03.2011
comment
Это настройка VBox или настройка ОС?   -  person Radagast the Brown    schedule 15.03.2011
comment
Это настройка ОС. Windows поддерживает сетевые серверы времени как минимум с XP; найдите его, нажав на часы на панели задач. Я не знаю об Ubuntu, но полагаю, что нечто подобное есть либо встроено, либо свободно доступно.   -  person Cody Gray    schedule 15.03.2011
comment
Если нет лучшего способа использовать конфигурацию VBox - потому что все они работают на одном хосте, зачем задействовать сеть - это то, что мне нужно сделать. Но это не поможет мне в сценарии тестирования - просто убедитесь, что cp правильный каждые несколько минут ... :(   -  person Radagast the Brown    schedule 15.03.2011
comment
Часы на разных дискретных машинах также имеют тенденцию к дрейфу. Возможно, запуск виртуальной машины усугубляет проблему, но определенно не создал ее. Вам действительно не следует сравнивать отдельные значения времени, полученные в результате тестов на виртуальных машинах. Я не уверен, чего вы пытаетесь достичь, но для меня это не имеет особого смысла. Просто запустите тест для отдельного хоста (что делает разницу во времени между машинами не имеющей значения), а затем сравните совокупные результаты.   -  person Cody Gray    schedule 15.03.2011
comment
@CodyGray OP специально сказал, что сравнение значений на той же виртуальной машине дает странные результаты. Принятый ответ показывает причину: часы виртуальной машины время от времени корректируются с часами хоста.   -  person Ian Ni-Lewis    schedule 15.11.2015


Ответы (3)


Если вы установили дополнения виртуального бокса (и, вероятно, у вас есть), на гостевом хосте есть служба, которая синхронизирует время.

Эта служба корректирует дрейф часов каждые 10 секунд, если разница между часами хоста и гостя меньше 20 минут, если разница больше 20 минут, он просто сбрасывает гостевые часы на время хоста. Таким образом, вы никогда не должны обнаруживать, что машина не синхронизируется более чем на 20 минут.

Можно изменить 20-минутный порог, используя гостевой параметр --timesync-set-threshold. Вы можете, например, установить его на 1000 мс, поэтому вы никогда не найдете машину с разницей более одной секунды.

Вы можете настроить гостевой параметр --timesync-set-threshold с хост-компьютера, используя следующую команду:

VBoxManage guestproperty set <your-vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000

Вам следует перезапустить гостевую службу дополнений или гостевую машину, чтобы она вступила в силу.

Дальнейшее чтение:

person Jens    schedule 17.11.2012
comment
ОТЛИЧНЫЙ!!! - именно то, что я искал! установка timeync-set-threshold на 50 мс была как раз той точностью, которая мне нужна для тестов. Я прогнал их снова - на этот раз с довольно точными результатами :) - person Radagast the Brown; 20.11.2012
comment
Я нашел эти параметры, но не то, чтобы мне пришлось перезапустить vboxadd-service в гостевой системе, прежде чем они вступят в силу. Спасибо. - person JanKanis; 07.05.2019
comment
Я настоятельно рекомендую вам НЕ полагаться на гостя как на источник времени. Может подтвердить очень странное поведение системного времени (win10 как гость и хост, с гостевыми инструментами, установленными на гостевой системе). Поведение выглядит так, что время от времени гостевые часы устанавливаются на пару минут в прошлом - затем системные часы бегут немного быстрее, пока не догонят «реальное» время, но делает это с превышением. Весь спектакль периодически повторяется. - person RGD2; 11.12.2020

Универсальным решением было бы:

  1. Разместите NTP-сервер в гостевой системе
  2. Настройте хосты для синхронизации с NTP каждые несколько минут

Что касается смещения часов с VirtualBox, есть эта проблема с некоторыми конфигурациями. В гостевых системах Windows 7 в некоторых случаях помогает отключение IO APIC.

Подробности: http://forums.virtualbox.org/viewtopic.php?f=8&t=21480

person Shamit Verma    schedule 15.03.2011
comment
Спасибо за ответ. Пробовал какое-то время. Это частично помогает для общего потока, но этого недостаточно для сравнительного анализа, для счетчиков производительности и для потоков, которые зависят от согласованного потока времени сервера :( - person Radagast the Brown; 29.03.2011
comment
Я настоятельно рекомендую вам НЕ полагаться на гостя как на источник времени. Может подтвердить очень странное поведение системного времени (win10 как гость и хост, с гостевыми инструментами, установленными на гостевой системе). Запускайте сервер времени на выделенном оборудовании, а не на виртуальной машине. - person RGD2; 11.12.2020

Сначала убедитесь, что Windows не ограничена использованием только HPET, поскольку это может помешать хосту и гостю (-ам) получить точный источник RTC:

Откройте cmd.exe администратора и введите bcdedit /enum, а затем убедитесь, что useplatformclock нет, если это тип bcdedit /deletevalue useplatformclock, чтобы удалить его, а затем перезагрузите Windows.

Я включил это на моем хосте, чтобы исправить старую проблему с драйвером (некоторые также говорят, что это «лучший» для производительности с нет надежных доказательств), сначала не было никаких заметных проблем, но потом я обнаружил, что RTC довольно сильно смещается (до 0,5 с в час ...).

Существуют также другие проблемы, присущие Windows (возможно, исправленные в Windows 8), где точность таймера устанавливается в зависимости от ОС, в то время как она может быть изменена любым приложением, которому требуется более высокая точность, и позже вернуться к более низкой точности. Эти изменения также со временем приведут к искажению RTC. Итак, лучшее, что можно сделать (исходя из моего собственного опыта), - это:

  1. полностью отключить синхронизацию хост-> гостевых часов, используя:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

(затем вам нужно выключить виртуальную машину и перезапустить ее, чтобы это изменение вступило в силу)

  1. установить пакет NTP на гостевой машине, которая использует стандартные внешние источники времени (как любой автономный компьютер).

  2. Установите правильный порт NTP на хосте Windows (я лично использую Heiko Gerstung's)

  3. Кроме того, вы должны убедиться, что гостевые дополнения вашего виртуального бокса обновлены .

person 2072    schedule 29.01.2015