Как гипервизор синхронизирует время между хостом и гостевой виртуальной машиной? - PullRequest
4 голосов
/ 12 декабря 2010

Я прочитал этот блог:

После проведения небольшого исследования я обнаружил, что это вызвано тем, что ядро ​​Linux по умолчанию работает на внутренней тактовой частоте 1000 Гци что VMware не может доставлять прерывания часов вовремя, не теряя их.Это означает, что некоторые тактовые прерывания теряются без предупреждения для ядер Linux, что предполагает, что каждое прерывание помечается 1/1000 секунды.Таким образом, каждое прерывание часов, которое теряется, заставляет часы отставать на 1/1000 секунды.

Теперь мой вопрос: как гипервизор синхронизирует время внутри системы , еслигипервизор способен обрабатывать прерывания часов?

Потому что, когда говорят (масштабированный пример, а не реальный мир): его 19:10:22 на хосте, пока он не распространяется на гостя, это будет 19:10:23 на хосте.

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

VMWare хронометраж

1 Ответ

2 голосов
/ 12 декабря 2010

Гипервизор не синхронизирует часы. Это программное обеспечение, запущенное в гостевой виртуальной машине, которое синхронизирует часы.

Со страницы 15 (с объяснением, продолжающимся до страницы 19) вашего связанного PDF:

Для синхронизации часов гостевой операционной системы доступны две основные опции: VMware Tools периодическая синхронизация часов или собственное программное обеспечение для синхронизации, которое вы бы использовали с гостевой операционной системой, если бы вы запускали его непосредственно на физическом компьютере. аппаратное обеспечение. Некоторые примеры встроенного программного обеспечения для синхронизации - Microsoft W32Time для Windows и NTP для Linux.

Средство синхронизации часов VMware Tools просто проверяет часы гостя по часам хоста очень часто (вероятно, раз в минуту) и корректирует часы гостя, если они неправильные. Если гостевые часы немного отключены, инструмент будет ускорять или замедлять гостевые часы, пока они не будут иметь правильное время (используя API, например SetSystemTimeAdjustment в Windows или adjtime в Unix). Если вам интересно, как инструмент обращается к часам хоста, для него есть только API, который инструмент VMware знает, как использовать.

...