Почему часы на моем компьютере показывают неправильное время? FreeBSD 12.X и 13.X

Ответить
admin
Администратор
Сообщения: 199
Зарегистрирован: 05 янв 2011, 04:19

Почему часы на моем компьютере показывают неправильное время? FreeBSD 12.X и 13.X

Сообщение admin »

Проблема: На сервере очень сильно стало отставать время, служба NTP не справлялась, батарейку на материнской плате не менял.


На компьютере установлено по меньшей мере два таймера, и FreeBSD выбрала не тот.

Запустите dmesg(8) и посмотрите строки, содержащие слово Timecounter. FreeBSD выбирает таймер с наибольшим значением качества.

Код: Выделить всё

# dmesg | grep Timecounter
Timecounter "i8254" frequency 1193182 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
Timecounter "TSC" frequency 2998570050 Hz quality 800
Timecounters tick every 1.000 msec
Удостоверьтесь в этом, проверив sysctl(3)-переменную kern.timecounter.hardware.

Код: Выделить всё

# sysctl kern.timecounter.hardware
kern.timecounter.hardware: ACPI-fast
Это может быть неработающий таймер ACPI. Самым простым решением будет отключить таймер ACPI в /boot/loader.conf:

Код: Выделить всё

debug.acpi.disabled="timer"
Либо же BIOS может изменить частоту таймера TSC - возможно, для изменения скорости работы процессора при работе от батареи или переводя в режим пониженного электропитания, но FreeBSD не отслеживает это, и в результате часы начинают спешить или отставать.

В этом примере имеется также и таймер i8254, и он может быть выбран записью его имени в sysctl(3)-переменную kern.timecounter.hardware.

Код: Выделить всё

# sysctl kern.timecounter.hardware=i8254
kern.timecounter.hardware: TSC -> i8254
Теперь компьютер должен аккуратнее следить за временем.

Чтобы это изменение вступало в силу во время загрузки системы, добавьте в файл /etc/sysctl.conf такую строчку:

Код: Выделить всё

kern.timecounter.hardware=i8254
Ответить