Инженеры Facebook открыли Precision Time Appliance для центров обработки данных
Инженерная команда Facebook спроектировала и выпустила высокоточное временное устройство — ключевой элемент современной инфраструктуры синхронизации времени в центрах обработки данных. Создав time card — плату PCIe, превращающую любой обычный сервер в источник времени Stratum-1 — и сотрудничая с Open Compute Project (OCP), мы сделали каждый компонент Open Time Server доступным под открытой лицензией.
В марте 2020 года Facebook объявил о миграции своих серверов центров обработки данных и потребительских продуктов на новый внутренний сервис Network Time Protocol (NTP). Обновление повысило точность хронометража с 10 мс до 100 мкс, обеспечивая более тонкий контроль инфраструктуры и более быструю производительность распределенных баз данных.
Новая архитектура NTP опирается на источник Stratum-1 — напрямую связанный с авторитетными часами, такими как глобальная навигационная спутниковая система (GNSS) или цезиевые часы:

Публичные пулы NTP (например, time.facebook.com) удобны, но вводят зависимость от интернет-соединения и подвергают системы риску сбоев или дрейфа. Чтобы устранить эти риски, мы построили выделенное аппаратное устройство, интегрирующее GNSS-приемник с миниатюрными атомными часами (MAC). Time card инкапсулирует эту функциональность на плате PCIe, позволяя любому x86-серверу с NIC, поддерживающим аппаратную временную штамповку, стать источником Stratum-1.
Зачем новое временное устройство?
Коммерческие временные приборы проверены в бою и часто стабильны, но имеют существенные недостатки:
- Они могут быть устаревшими и уязвимыми к брешам безопасности, с циклами патчей в месяцы или годы.
- Закрытое ПО ограничивает конфигурацию и мониторинг; проприетарные CLI или веб-UI мешают автоматизации.
- Проприетарное железо несервисуемо — отказ компонента требует ремонта у вендора или новой единицы.
- Низкообъемное производство приводит к высоким наценкам, делая долгосрочную эксплуатацию дорогой.
Эти ограничения заставляли многие организации принимать компромиссы. Мы решили изучить альтернативу: специально созданное открытое временное устройство на базе x86-железа.
Прототипирование временного устройства
Наш начальный концепт объединил GNSS-приемник, высокостабильный генератор и FPGA-обработку в единую плату PCIe — см. блок-схему ниже:

GNSS-модуль доставляет и время суток (ToD), и сигнал один импульс в секунду (PPS). В паре с высокостабильным генератором — таким как рубидиевый или печной кварцевый генератор — система может достичь наносекундной точности. PPS и ToD подаются на высокопроизводительный NIC (например, NVIDIA Mellanox ConnectX-6 Dx), поддерживающий аппаратную временную штамповку и PPS ввод/вывод.
Используя инструмент ts2phc, мы синхронизировали физические часы NIC с GNSS PPS в пределах нескольких десятков наносекунд, подтверждая наш подход:

Для повышения надежности мы разделили дизайн на два логических блока: payload (двигатель точного времени) и delivery (NIC). Payload интерполирует время между последовательными импульсами PPS, используя FPGA-двигатель и локальный генератор. В случае потери GNSS движок полагается на внутреннюю стабильность атомных часов.

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

Используя 10 МГц опорную частоту (от рубидиевых часов или внешнего SMA входа), мы повышаем частоту до 125 МГц (периоды 8 нс) и ассоциируем субсекундные приращения с шагами 250 пс. Пропорционально-интегральный контур точно настраивает частоту через 12.5× PLL и, при необходимости, прямые корректировки генератора.
Holdover — потеря точности времени при недоступности GNSS — критическая метрика. Наш прототип достиг дрейфа менее 300 нс за 24 часа, что хорошо входит в спецификации MAC SA.53s.
Временное устройство в действии
После установки time card превращает любой совместимый x86-сервер в источник времени Stratum-1, независимый от NTP, PTP, SyncE или других протоколов. Точность системы достаточна для большинства корпоративных потребностей синхронизации времени.

Настройка проста: установите ядро Linux 5.15+ (или соберите драйвер из репозитория OCP GitHub на ядре 5.12+). Драйвер предоставляет устройства PHC, GNSS, PPS и MAC под /sys/class/timecard/ocp0/:
$ ls -l /sys/class/timecard/ocp0/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 device -> ../../../0000:04:00.0/ -r--r--r--. 1 root 4096 Aug 3 19:49 gnss_sync lrwxrwxrwx. 1 root 0 Aug 3 19:49 i2c -> ../../xiic-i2c.1024/i2c-2/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 pps -> ../../../../../virtual/pps/pps1/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ptp -> ../../ptp/ptp2/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ttyGNSS -> ../../tty/ttyS7/ lrwxrwxrwx. 1 root 0 Aug 3 19:49 ttyMAC -> ../../tty/ttyS8/
Настройте chrony или PTP-демон для использования PHC как опорных часов:
# chrony refclock PHC /dev/ptp2 tai poll 0 trust
Валидация с Calnex Sentinel показывает ±40 мкс стабильность NTP за 48 часов и субнаносекундные смещения PTP. Комбинированная ошибка PPS между time card и Sentinel остается в пределах ±200 нс.



Модульный дизайн также позволяет заменять MAC на более экономичный OCXO или TCXO, жертвуя holdover-производительностью ради бюджета.
Открытие дизайна
Для расширения влияния мы сотрудничаем с Open Compute Project для запуска Time Appliance Project (TAP). Все спецификации, схемы, BOM, механические чертежи и исходный код публично доступны в репозитории TAP на GitHub. Вендоры вроде Orolia и NVIDIA уже производят time card и NIC для точной синхронизации соответственно.
Наша спецификация Open Time Server детально описывает, как собрать аппаратный и программный стек для создания надежного, полностью контролируемого временного устройства. Владение всей системой дает инженерам глубокую видимость, более тугкую безопасность и простое обслуживание.
Хотя текущее устройство представляет большой шаг вперед, мы продолжим совершенствовать точность, масштабировать синхронизацию по глобальной инфраструктуре Facebook и делиться достижениями с сообществом open-compute.
Встроенный
- Песочные часы: история, ремесло и современная привлекательность
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Максимизация производительности: как ПО для обслуживания снижает затраты и экономит время
- Переосмысление управления запасами: современные стратегии для производителей
- Лидерам цепочек поставок: примите наступательную стратегию для роста и устойчивости
- Цифровые двойники повышают пунктуальность West Coast Mainline
- Работа с датами и временем в Python: Практическое руководство
- Понимание интерфейсов человек-машина (HMI) в современной промышленности
- Crescent Crown повышает эффективность и снижает затраты с DocStar ECM AP Automation
- Оптимизация производства и отгрузки: проверенные стратегии снижения затрат и повышения эффективности