Вопрос Каково обоснование значений по умолчанию для adjtimex --adjust?


Adjtimex Утилита имеет --adjust режим, который может использоваться для сравнения системных часов с CMOS-часами, вычисляет предлагаемые значения для поставить галочку а также смещение частоты переменные времени ядра и автоматически установить эти рекомендуемые значения.

По умолчанию это 8 сравнений (count), с интервалом в 10 секунд между сравнениями (interval). Предлагаемые значения автоматически устанавливаются после каждого третьего сравнения, не считая первых двух.

Вот пример вывода adjtimex --adjust, Весь процесс (со значениями по умолчанию для count а также interval) занимает 70 секунд:

                                      --- current ---   -- suggested --
cmos time     system-cmos  error_ppm   tick      freq    tick      freq
1391731712      -3.877457
1391731722      -3.879791     -233.4  10000         0
1391731732      -3.882372     -258.1  10000         0   10002   3806862
1391731742      -3.884677     -230.5  10000         0   10002   1999050
1391731752      -3.887348     -267.1  10000         0   10002   4397487
1391731762      -3.887226       12.2  10002   4397487   10002   3599050
1391731772      -3.886892       33.4  10002   4397487   10002   2208425
1391731782      -3.886588       30.4  10002   4397487   10002   2405300

Мой вопрос: кто-нибудь знает, почему были эти значения по умолчанию (count=8, interval=10) выбрано?

Я думаю, что чем длиннее интервал между сравнениями, тем более точную оценку вы получите от дрейфа между системой и CMOS-часами. Поэтому, полагая, что мы хотим, чтобы tio придерживался 70-секундной продолжительности для всего процесса, я бы подумал, что count=3, interval=35 было бы очевидным выбором (обратите внимание, что минимальные 3 сравнения необходимы для того, чтобы получить рекомендуемые значения тика и частоты).

Может кто-нибудь пролить некоторый свет на это?


2
2018-02-11 12:14


происхождения




ответы:


Дэвид Л. Миллс (создатель утилиты adjtimex) написал немало работ по этому вопросу, доступных (со ссылками) Вот  ответы, которые вы ищете, можно найти в его статье: «Улучшенные алгоритмы синхронизации» Компьютерные сетевые часы (1995)

В вашем конкретном вопросе возникает вопрос, почему принимается более 3 отсчетов (в данном случае 8) в течение 70 секунд. Хотя требуется только 3 сравнения (выборки), большее число образцов может быть использовано для создания 95% доверительный интервал значения, которое оценивает системный дрейф часов.

Вычисленные рекомендуемые значения меток устанавливаются после каждого третьего сравнения для дальнейшего уточнения точности оценочного дрейфа.

По статистике, чем больше образцов, которые вы берете, в течение более длительного интервала, тем ближе к фактическому значению дрейфа.

Некоторая забавная история из работ доктора Милля: В исходной конструкции Unix аппаратный таймер прерывает ядро с фиксированной скоростью: 100 Гц в ядре SunOS, 256 Гц в ядре Ultrix и 1024 Гц в OSF / 1 ядро. Поскольку интервал таймера Ultrix (обратный скорость) равномерно не разделяет одну секунду в микросекундах, ядро добавляет 64 микросекунды один раз в секунду, поэтому временная шкала состоит из 255 авансов 3906 мкс плюс один из 3970 мкс

Модель часов Unix 4.3bsd требует периодического жесткого прерывания таймера изделия, создаваемого работающим генератором в диапазоне 100-1000 Гц. Каждое прерывание вызывает increment tick для добавления к переменной времени ядра. Значение приращения выбирается так, чтобы счетчик, плюс начальное смещение, установленное в настройке дня () call, равно времени суток в секундах и микросекундах. Когда галочка не равномерно делит вторую микросекунды, дополнительный дополнительный приращение добавляется к время ядра раз в секунду, чтобы составить разницу.

«Устойчивость часов заключается в том, насколько хорошо он может поддерживать постоянную частоту, точность в том, насколько хорошо его время сравнивается с системными часами, а точность заключается в том, какое время может быть разрешено. Все эти факторы необходимо объединить с"


2
2018-02-21 08:04



Я говорю, что в этом процессе ошибка измерения намного важнее статистической ошибки. Больше образцов, если взять за более короткий период времени, не приведет к лучшему результату. Выполняя два раунда (на итерации 5 устанавливаются рекомендуемые значения tick / freq и начинается новый раунд), каждый раунд на самом деле короче общей продолжительности (70 с). Я хочу сказать, что выполнение одного раунда вместо двух, а вместо этого увеличение времени между выборками, действительно даст лучшие результаты, поскольку ошибка измерения становится менее значительной. - Grodriguez
Что касается увеличения времени между образцами, то есть, вероятно, желание иметь часы в рабочем состоянии раньше, чем позже. - dfc
@dfc: Да, я говорю, что если предположить, что общая продолжительность фиксирована (70 секунд), я думаю, что лучшим выбором будет {count=3, interval=35} скорее, чем {count=8, interval=10} - Grodriguez