Относительно SystemD Services Что означает Monoticant Monotic Monotic?

Это была проблема разрешения. Проблема была окончательно решена, когда администратор дал мне все разрешения на удаленную папку.

3
03.07.2018, 18:31
2 ответа

Функция gethrtime()Solaris существует уже 28 лет и возвращает монотонные наносекунды с момента загрузки.

Ваше число будет соответствовать 4 часам безотказной работы, а поскольку автор systemd смотрел на Solaris, вполне вероятно, что это наносекунды с момента загрузки.

Проверка:

14786979371795 разделить на миллиард дает 14786,979371795 секунд

14786,979371795 секунд разделить на 60 секунд, получится 246,4496561965 минут

246,4496561965 минут равно 4,1074942699 часов

Поскольку согласно отзывам время безотказной работы составляет 172 дня,очевидно, что число микросекунд с момента последней загрузки, если число основано на монотонных часах изclock_gettime()

Кстати, :монотонный счетчик, который считает наносекунды, обеспечит время безотказной работы до 1696 лет с 64-битным числом со знаком.

-3
27.01.2020, 21:21

Описание интерфейса D -Bus ABI systemd на freedesktop.org описывает метки времени следующим образом:

InactiveExitTimestamp, InactiveExitTimestampMonotonic, ActiveEnterTimestamp, ActiveEnterTimestampMonotonic, ActiveExitTimestamp, ActiveExitTimestampMonotonic, InactiveEnterTimestamp, InactiveEnterTimestampMonotonic contain CLOCK_REALTIME and CLOCK_MONOTONIC 64bit usec timestamps of the last time a unit left the inactive state, entered the active state, exited the active state, or entered an inactive state. These are the points in time where the unit transitioned inactive/failed → activating, activating → active, active → deactivating, and finally deactivating → inactive/failed. The fields are 0 in case such a transition has not been recording on this boot yet.

Это немного скрыто, но в середине написано «отметки времени usec», то есть микросекунды (мкс ).

systemd получает метки времени от Linux, который предоставляет функцию системного API с именем clock_gettime()для получения времени от одного из нескольких альтернативных «часов». Как говорится в его документации, он запрашивает так называемые -CLOCK_REALTIMEи CLOCK_MONOTONIC.

В руководстве по этой функции сказано(акцент мой):

CLOCK_MONOTONIC
Clock that cannot be set and represents monotonic time since some unspecified starting point. This clock is not affected by discontinuous jumps in the system time (e.g., if the system administrator manually changes the clock), but is affected by the incremental adjustments performed by adjtime(3) and NTP.

В моей системе значения соответствуют начальной точке времени загрузки системы, но нам, вероятно, не следует полагаться на это. (Обратите внимание, что в руководстве по Linux также говорится о разнице между CLOCK_BOOTTIMEи CLOCK_MONOTONIC.)

Значения *TimestampMonotonicможно использовать для расчета интервалов, или вы можете использовать метки времени в реальном времени, если вам нужны даты и время. Если у вас есть таймеры, обратите внимание, что их настройки относительного времени работают с точки зрения монотонного времени.


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

ActiveEnterTimestamp=Tue 2018-07-03 18:37:31 EEST
ActiveEnterTimestampMonotonic=14341647533587

и

ActiveEnterTimestamp=Tue 2018-07-03 19:03:04 EEST
ActiveEnterTimestampMonotonic=14343180833503

Разница составляет 14343180833503 - 14341647533587или 1533299916, то есть те, которые находятся между 25,5 минутами в микросекундах.

9
27.01.2020, 21:21

Теги

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