Как обеспечить, чтобы hv_utils обновлял системные часы в Azure

Команда dmesg считывает буфер printk ядра, используя режим доступа к пространству пользователя через /dev/kmsg. Каждая запись имеет монотоновую метку времени в микросекундах, которая устанавливается при создании записи журнала.

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

Как я полагаю, это может отличаться от действия к действию. Когда произойдет событие с ядром, то есть подключите USB-устройство, ядро ​​будет регистрировать это, как только оно будет иметь полезную информацию. Когда ядро ​​выполняет запланированную задачу, имеет смысл регистрировать результаты при выполнении задания. Если это сложная работа, возможно, она создает некоторые записи журнала во время ее запуска, но, как я полагаю, в целом после того, как что-то интересное произошло, или немного времени ушло.

Как вы можете получить доступ к принтеру ядра буфера объясняется здесь.

Итак, если вы специально хотите знать, зарегистрирована ли какая-либо запись в начале или в конце действия, вам нужно посмотреть в коде с интерфейсом kernel- или module-sorce при вызове программы log-функция.

0
задан 19 December 2017 в 05:22

2 ответа

Таким образом, похоже, что с источником времени Hyv-V hv_util возникла известная проблема. Также, когда мы перезапустили виртуальную машину, 20-секундный дрейф вовремя ушел, поэтому вполне вероятно, что аппаратные часы работают, но возникают проблемы с обновлением системных часов.

Наша виртуальная машина использовала ядро ​​4.4.0-47, и вышеупомянутая проблема была исправлена ​​в 4.4.0-87.110. После запуска sudo apt-get update && sudo apt-get upgrade и перезапуска виртуальной машины мы теперь имеем ядро ​​4.4.0-104. Я буду следить за дрейфом, но мне все же интересно, есть ли способ подтвердить, что hv_utils обновляет системные часы.

Обновление: пока это похоже на исправление проблемы. Раньше мы видели около 1 мс дрейфа за 24 секунды (чуть более 3,5 с дрейфа каждые 24 часа), а после обновления ядра мы наблюдаем, что дельта остается ниже 200 мс.

$ sudo apt-get install iputils-clockdiff $ clockdiff TESTNTPSERVER . host=VMNAME rtt=750(187)ms/0ms delta=-182ms/-182ms Tue Dec 19 03:46:43 2017

Обновление: [ ! d4] В течение следующих 24 часов мы увидели, что он продолжает дрейфовать от -200мс до + 2904 мс. Похоже, что вышеприведенный патч заключался в устранении конфликта между встроенными настройками времени и пользовательским пространством ntpd / systemd-timesyncd, что заставило сервер продолжать дрейфовать. В нашем случае systemd-timesyncd никогда не обновлял часы так как он не может достичь сервера ntp по умолчанию (подтвержден сообщением об ошибке journalctl -u systemd-timesyncd и пустым файлом /var/lib/systemd/clock). Итак, что мы видим, это новое поведение в ядре 4.4.0-87.110, где вместо регулировки времени в ядре часы hyper-v теперь отображаются как аппаратные часы PTP (PHC). Используя phc_ctl, мы можем видеть эти часы на виртуальной машине (обратите внимание, что это также включает службу ptp4l):

$ clockdiff TESTNTPSERVER ............ host=VMNAME rtt=33(93)ms/0ms delta=2904ms/2904ms Tue Dec 19 20:59:48 2017 $ ls -la /var/lib/systemd/clock -rw-r--r-- 1 systemd-timesync systemd-timesync 0 Feb 11 2016 /var/lib/systemd/clock $ sudo apt-get install linuxptp $ sudo systemctl disable ptp4l $ sudo phc_ctl /dev/ptp0 get;echo " date: clock time is $(date +%s.%N) or $(date)" phc_ctl[65577.406]: clock time is 1513721576.691973400 or Tue Dec 19 22:12:56 2017 date: clock time is 1513721574.065892000 or Tue Dec 19 22:12:54 UTC 2017

Итак, если мы хотим использовать встроенную синхронизацию времени Hyper-V на 4.4.0- 87.110 или более новое ядро, нам нужно использовать процесс синхронизации времени, который поддерживает аппаратные часы PTP.

0
ответ дан 18 July 2018 в 00:53

Таким образом, похоже, что с источником времени Hyv-V hv_util возникла известная проблема. Также, когда мы перезапустили виртуальную машину, 20-секундный дрейф вовремя ушел, поэтому вполне вероятно, что аппаратные часы работают, но возникают проблемы с обновлением системных часов.

Наша виртуальная машина использовала ядро ​​4.4.0-47, и вышеупомянутая проблема была исправлена ​​в 4.4.0-87.110. После запуска sudo apt-get update && sudo apt-get upgrade и перезапуска виртуальной машины мы теперь имеем ядро ​​4.4.0-104. Я буду следить за дрейфом, но мне все же интересно, есть ли способ подтвердить, что hv_utils обновляет системные часы.

Обновление: пока это похоже на исправление проблемы. Раньше мы видели около 1 мс дрейфа за 24 секунды (чуть более 3,5 с дрейфа каждые 24 часа), а после обновления ядра мы наблюдаем, что дельта остается ниже 200 мс.

$ sudo apt-get install iputils-clockdiff $ clockdiff TESTNTPSERVER . host=VMNAME rtt=750(187)ms/0ms delta=-182ms/-182ms Tue Dec 19 03:46:43 2017

Обновление: [ ! d4] В течение следующих 24 часов мы увидели, что он продолжает дрейфовать от -200мс до + 2904 мс. Похоже, что вышеприведенный патч заключался в устранении конфликта между встроенными настройками времени и пользовательским пространством ntpd / systemd-timesyncd, что заставило сервер продолжать дрейфовать. В нашем случае systemd-timesyncd никогда не обновлял часы так как он не может достичь сервера ntp по умолчанию (подтвержден сообщением об ошибке journalctl -u systemd-timesyncd и пустым файлом /var/lib/systemd/clock). Итак, что мы видим, это новое поведение в ядре 4.4.0-87.110, где вместо регулировки времени в ядре часы hyper-v теперь отображаются как аппаратные часы PTP (PHC). Используя phc_ctl, мы можем видеть эти часы на виртуальной машине (обратите внимание, что это также включает службу ptp4l):

$ clockdiff TESTNTPSERVER ............ host=VMNAME rtt=33(93)ms/0ms delta=2904ms/2904ms Tue Dec 19 20:59:48 2017 $ ls -la /var/lib/systemd/clock -rw-r--r-- 1 systemd-timesync systemd-timesync 0 Feb 11 2016 /var/lib/systemd/clock $ sudo apt-get install linuxptp $ sudo systemctl disable ptp4l $ sudo phc_ctl /dev/ptp0 get;echo " date: clock time is $(date +%s.%N) or $(date)" phc_ctl[65577.406]: clock time is 1513721576.691973400 or Tue Dec 19 22:12:56 2017 date: clock time is 1513721574.065892000 or Tue Dec 19 22:12:54 UTC 2017

Итак, если мы хотим использовать встроенную синхронизацию времени Hyper-V на 4.4.0- 87.110 или более новое ядро, нам нужно использовать процесс синхронизации времени, который поддерживает аппаратные часы PTP.

0
ответ дан 24 July 2018 в 17:18

Другие вопросы по тегам:

Похожие вопросы: