FreeBSD под VMWare: Теперь часы работают как часы

Автор: | 16 сентября 2009

Снова добрался до виртуальной FreeBSD, а там.. ужос! Часы отстали на 4 часа.. В предыдущем посте о часах я выбирал разные таймеры. Ни один не работает как нужно. Что делать?

TSC

Я остановился на таймере TSC. Он должен работать на частоте процессора. dmesg рапортует о частоте:

Timecounter "TSC" frequency 3302974606 Hz quality 800


Этот параметр можно посмотреть через sysctl

~> sysctl -a | grep tsc_<br />
machdep.tsc_freq:  3302974606


При таком значении часы отстают, значит оно должно быть меньше.

Fix

Открываем файл vmware.log и ищем строку, содержащую TimeTracker

Sep 14 11:11:05: vmx| TimeTracker host to guest rate conversion  46219175637833 @ 2999990000Hz -> 46219175637833 @ 2999990000Hz<br />
Sep 14  11:11:05: vmx| TimeTracker host to guest rate conversion ((x * 2147483648)  >> 31) + 0


Копируем магическое 🙂 2999990000 и записываем его в sysctl:

~> sysctl machdep.tsc_freq=2999940000<br />
machdep.tsc_freq:  3302974606 -> 2999940000<br />
~> echo “sysctl machdep.tsc_freq=2999940000”  >> /etc/sysctl.conf<br />
# one more trick:<br />
~> echo "kern.hz=100" >> /boot/loader.conf


И синхронизируем часы с сервером времени, например:

ntpdate -bs 132.236.56.250


Все, теперь часы работают как часы 🙂

За тестовый час они не отстали и не обогнали контрольный сервер ни на секунду.

Добавить комментарий