TGViewer
Семён сохраняет полезное_) Семён сохраняет полезное_) @pole_sam · 686 subscribers
Post #487 644

Forwarded from likeabus channel (Sergey Bocharnikov)

NVIDIA на прошедшем Netdev 0x19 выступила с докладом, где исследовала проблему синхронизации времени внутри ДЦ.

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

Пошли изучать, нашли 3 варианта:

1. PTP

Ну тут и говорить особо нечего, всем известный и широко используемый протокол внутри провайдеров для синхронизации времени. Умеет то, что не умеет NTP. Точность до наносекунд.

Всё бы хорошо, но часто бывает когда у эндпоинта несколько карточек, либо к одной карточке подвязано несколько эндпоинтов (докер, кубер и т.д.), то соответственно возникает большое количество клиентов PTP и приходится поддерживать stateful для каждого, а это проблема.
Поэтому был предложен следующий вариант 👇

2. Клиент-серверный IEEE 1588, он же CSPTP.

Собственно практически тот же самый PTP, только проще.

Стандарт вот, но там как обычно у ieee с доступом какие-то приколы, в общем если найдёте, кидайте в комментарии - https://standards.ieee.org/ieee/1588.1/11644/.


Реализаций немного и есть вот такие:

SPTP - вариант, который предложили инженеры FB, являющиеся соавторами данной презентации;

FlashPTP - автор работает в Meinberg, немецкая компания специализирующаяся на разработке и производстве оборудования для синхронизации времени;

NTP-over-PTP - драфт от инженеров Red Hat, который поддерживается теперь и в chrony - https://chrony-project.org/doc/4.6.1/chrony.conf.html#ptpport.

В целом, все три варианта в той или иной степени по всей видимости очень даже рабочие и если я правильно понял, то первый - SPTP - сейчас и является основным внутри ДЦ FB.


Исходя из доклада, данный метод имеет одну существенную проблему - это нагрузка при масштабировании. Да, она ниже чем у PTP, за счет отказа от stateful, но всё также требует общения с CPU при каждом взаимодействии. Поэтому инженеры пошли дальше и решили поискать какой-то альтернативный вариант, и тут уже нашлось вообще иное решение 👇

3. Hermóðr - новый подход.

Опирается на оценку времени через корреляцию с CPU таймером.

Немного оффтопа 🙂

Если что, слово Hermóðr, или Хермод, оказывается является именем скандинавского бога скорости, аналог греческого Hermes, или Гермес, прикольно то, что у них и имена очень даже совпадают. К слову об уникальности каждого пантеона 🙂


Документации к сожалению нет, только опираться на презентацию и доклад.

Сама суть данного метода, как я понял, заключается в том, что добавляется демон, который получает время из двух источников, один из которых PCIe device, а второй CPU clock. После этого он проводит некоторое вычисление и результат складывает в shared memory. Дальше отдельная библиотека, libhermod, идёт в эту область памяти и забирает последние данные, плюс тоже идёт в CPU clock, и на основе полученной информации экстраполирует точное время. Таким образом, вы обращаетесь к PCIe только один раз, а дальше время обновляется уже без этого взаимодействия, т.е. не требуется постоянного обращения в /dev/ptpX, что сильно ускоряет результат работы и позволяет добиться снижения задержек в 80-100 раз по сравнению с CSPTP.

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

Ссылки вот тут:
Презентация
Видео
  • ❤ 8
  • 🔥 1
  • 🤔 1
More from @pole_sam
  1. Sep 27, 2026Всем привет! Сделал свой форк pysim для удобного вывода информации. https://telegra.ph/For…
  2. Sep 27, 2026Приехала плата PTP грандмастера
  3. Sep 25, 2026Всем привет! Приехала сегодня отладка от Qualcomm что по всей видимости в своё время вынес…
  4. Sep 23, 2026Всем привет! Платы PTP-грандмастера приехали наконец-то в РФ. Скоро приступлю к bring-up п…
  5. Sep 20, 2026Всем привет! Вышла заметка о том как я сделал себе управляемый коммутатор из медиаконверте…
  6. Sep 18, 2026https://habr.com/ru/articles/1078478/ Интересная статья об организации памяти и алгоритма…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →