Новенький iPhone показывает время не точнее, чем механические наручные часы многолетней давности

 

Компьютеры решают многие задачи с предельной точностью, но отсчет времени у них, как это ни удивительно, до сих пор вызывает сложности.

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

«Чтобы приблизить точность отсчета времени к приемлемой, нужно решить слишком много задач», — посетовал Джордж Невилл-Нил на конференции Applicative, проведенной Ассоциацией вычислительной техники (ACM). Невилл-Нил разрабатывает программное обеспечение, помогающее финансовым учреждениям и другим организациям измерять время точнее. Он принимает участие в работе над стандартом IEEE Precision Time Protocol (PTP), который позволит синхронизировать время по сети с большей точностью, чем нынешний отраслевой стандарт Network Time Protocol (NTP).

Компьютерные часы могут сбиваться вследствие множества причин, в том числе из-за нестабильности пропускной способности сети, программного обеспечения и условий окружающей среды.

Для отсчета времени в компьютерах обычно используется кварцевый резонатор, который генерирует электрические импульсы, синхронизирующие работу процессора, памяти, шин и других компонентов. Но производители компьютеров обычно применяют недорогие резонаторы, точность которых оставляет желать лучшего.

По мере старения кристалла генерируемая им частота меняется. Может влиять и рабочая нагрузка на систему — из-за нагревания компонентов частота возрастает. По сути, кварцевые резонаторы не лучше механических часов: новенький iPhone показывает время не точнее, чем дедовские наручные часы, утверждает Невилл-Нил.

Протестировав свой ноутбук с помощью дорогостоящих точных часов, он выяснил, что время на компьютере за два часа сбилось на 15 мс. «Это абсолютно типично для ПК», — подчеркивает он.

Для многих конечных пользователей подобные расхождения несущественны, но некоторым автоматизированным системам все же нужно больше точности.

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

Точный отсчет времени нужен и роботизированным системам — для согласования действий движущихся частей. А энергетические компании с помощью точного времени контролируют частоту переменного тока, доставляемого абонентам: она должна составлять 60 Гц. Базовым станциям LTE необходима синхронизация действий с расхождением не больше 1100 нс. Высочайшая точность измерения времени нужна при высокочастотных финансовых торгах, осуществляемых автоматизированными трейдерами, которым необходимо проводить операции за считанные миллисекунды.

Разумеется, большинство серверов могут синхронизировать часы по Интернету с каким-либо из официальных сервисов хронометража, например Национальным институтом стандартов и технологий (NIST). Но синхронизация по Интернету имеет свои недостатки. Пакет точного времени, транслируемый NIST, приходит на запрашивающий сервер с задержкой. Серверное ПО может оценить, сколько занимает доставка сообщения, но время передачи варьируется в зависимости от загруженности сети.

По умолчанию NTP, используемый на большинстве серверов для синхронизации времени, опрашивает главные часы один раз в 64 с; данный параметр можно уменьшить только до 15 с — этим ограничиваются возможности протокола.

Кроме того, при использовании NTP бывает сложно обеспечивать точность времени в виртуализованных облачных средах, причем выяснить причину удается не всегда. «Над задачей отсчета точного времени для виртуальных машин бьются все облачные провайдеры», — отмечает Невилл-Нил.

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

Стандарт PTP был разработан с целью повысить точность отсчета времени на серверах. Он используется в финансовой индустрии, энергетике и телекоммуникациях.

«Можно было бы создать и более точную систему отсчета времени, но, скорее всего, она вам обойдется на порядок дороже нынешних», — отметил Невилл-Нил.