На протяжении всей истории мир полагался на астрономическое время. Восходит Солнце — наступает день, заходит — наступает ночь. День и ночь разделяли на часы, часы на минуты, минуты на секунды — и этого было достаточно.
Были небольшие отклонения, вызванные замедлением вращения Земли и другими природными силами, но они не нарушали привычный ход процессов и оставались практически незамеченными. Но с развитием технологий на погрешности в отсчете времени стало трудно закрывать глаза.
В современном мире синхронизация устройств по времени — одна из основных задач. Под катом рассказываем, как люди работали над ее решением и какие технологии изобрели.
Астрономическое и атомное время
За последние 50 лет международное сообщество использовало два разных способа отсчета времени. Один древний и общепринятый способ исчисления времени — по положению Солнца и звезд. Другой — более точный, основан на частоте изменения состояния атомов цезия, обеспечивает необходимую синхронизацию цифровых устройств.
Проблема: времени два и они между собой расходятся. Астрономическое время (UT1) отстает на короткое время от атомного времени (TAI). Но этого достаточно, чтобы нарушить работу вычислительных систем.
Поэтому каждые несколько лет, начиная с 1972 года, два времени синхронизируются путем введения дополнительной (високосной) секунды. Атомные часы на секунду приостанавливаются, чтобы астрономические догнали их. Это происходит каждый раз, когда два времени расходятся более чем на 0,9 секунды.
За последние 50 лет дополнительные секунды вводились 27 раз. Неизвестно, когда придется вводить их в следующий раз — это зависит от того, насколько быстро вращается планета.
Земля может замедляться или ускоряться — в зависимости от приливов, погоды, землетрясения, распределения ледяных шапок на вершинах гор и потока расплавленных металлов в ядре Земли. Но когда наступит момент ввода следующей високосной секунды, могут возникнуть большие проблемы. Математики могут спрогнозировать это заранее, но трудно предсказать, как все будет развиваться в реальном мире. Велика вероятность, что что-то пойдет не так.
Капсула с цезием и «печь».
NBS-1, первые атомные цезиевые часы.
Большой пробел, или вторая проблема синхронизации
На рубеже этого столетия возникла новая проблема, вызванная крупными технологическими компаниями, у которых не было опыта работы с дополнительными секундами. С 1999 по 2005 год дополнительные секунды не вводились. Поэтому все понятия облачных сервисов, мультипроцессоров и тому подобного возникли в период, когда дополнительных секунд не было. С тех пор високосные секунды вводились в 2005 году, конце 2008 года и 2012 году.
Проблема: был длительный интервал, когда люди разрабатывали новые технологии и им не приходилось думать о проблеме дополнительных секунд, а затем Земля стала ускоряться.
Расхождение во мнениях
Компании призывают отменить високосную секунду, чтобы избежать проблем, которые следуют за «большим пробелом», упущением в синхронизации времени. Хронометристы и политики считают, что отмена дополнительной секунды оторвет официальное время от древних традиций астрономии и приведет к преобладанию точных, но созданных в лаборатории атомных часов. Среди самых яростных противников — британское правительство, которое контролировало среднее время по Гринвичу — астрономическое время, которые определяется путем усреднения положения Солнца за год.
Также российское правительство выступает за сохранение дополнительной секунды до 2040 года. Национальная система спутникового позиционирования ГЛОНАСС была построена с учетом дополнительных секунд и изменение нынешней методологии хронометража может иметь последствия для армии РФ. Есть также Ватикан, который занимается астрономией со времен создания Григорианского календаря и также выступает против отмены дополнительных секунд.
Альтернативные решения синхронизациии
Но есть и варианты исправления, призванные скрыть внезапные изменения времени в таких системах, как Linux. Например, можно приостановить работу системы NTP на секунду, а не переводить системные часы назад. По сути, вы обманываете NTP, поэтому он не делает внезапного отката назад, но все равно добавляет дополнительную секунду.
Linux использует протокол сетевого времени (NTP) для подключения к мировым атомным часам и проверки времени.
Размазывание
Возможное оптимальное решение — это то, которое использует Google. В своем блоге компания описала метод — «размазывание» (time smearing). Вместо того, чтобы сразу добавлять целую секунду, Google модифицировала NTP так, что он добавляет миллисекунды к часам в течение относительно длительного периода времени.
Почему не все время можно размазать
Работа с дополнительными секундами, особенно в сетевом мире, часто приводила к организационным уронам. Дополнительные секунды в 2012 и 2017 годах стали причиной регулярных отключений и проблем в начале нового года.
Пример сбоя со временем: система показывает 60 секунд, а ноль следующей минуты начинается с 61 секунды предыдущей.
В полночь назначенного дня часы отсчитывают время с 23:59:59 до 23:59:60, а затем — до 00:00:00. Эта необычная средняя временная метка (23:59:60) «сводит с ума» скоординированные системы. Високосная секунда в 2012 году обогнала Reddit, Gawker, Cloudflare и австралийскую авиакомпанию Qantas.
С тех пор многие технологии подготовились к следующей дополнительной секунде с помощью размазывания или микросекундного замедления в течение длительного, но удобного для глобального сервера периода.
Размазывание високосной секунды.
Amazon и Post также разработали собственные методы синхронизации астрономического и атомного времени. Вторая компания, например, размазывает високосную секунду с шагом в миллисекунды по 17-часовому периоду. Но все эти методы угрожают единообразию — ни один из них не станет нормой для всех компаний. Когда наступит потребность ввести дополнительную секунду, у кого-то что-то может где-то упасть.
Инженеры Post отмечают, что хоть каждая дополнительная секунда до сих пор была положительной, отрицательная дополнительная секунда (которую компьютерные системы не могут легко «размазать») может возникнуть из-за «изменения схемы вращения Земли».
Подобного рода опасения встречаются не впервые: профессор Леонид Зотов из МГУ им. Ломоносова считает, что виной может стать неравномерное движение географических полюсов Земли. При таком раскладе часы перейдут с 23:59:58 на 00:00:00. Как поведут себя компьютеры в таком случае — остается только гадать.
Что делать с високосной секундой? Мнение ученых
Джуда Левин, руководитель проекта сетевой синхронизации Международный союз электросвязи, настоял, чтобы перенести его на 2023 год.
Последнее официальное решение состоялось 20 ноября на большой встрече ITUWRC в Дубае. Ученые голосуют за отказ от високосной секунды к 2035 году, так как опасаются, что она нанесет ущерб системам GPS и телекоммуникациям в целом.
Но американские ученые, в том числе Джуда Левин, не верят, что дискуссия принесет результат. Любое предлагаемое изменение потребует консенсуса между всеми участвующими странами, включая Россию.
Возможно, новый метод доктора Левина систематизируют в ближайшие несколько лет на других конференциях. На данный момент предложение о високосной минуте только начало распространяться как часть проекта, который еще не прошел всестороннюю проверку.
Предложение о «високосных минутах» было бы близко к тому, что уже решила резолюция IBWM почти единогласным голосованием. Предложение — позволить Всемирному координированному времени оставаться привязанным к атомным часам, но раз в 100 лет возвращать его в соответствие с астрономическими часами.
Возможно, с 2035 года будут отменены високосные секунды, вызывающие сбои в работе сетей и 50-летний кошмар хронологических ошибок округления закончится. Представители IBWM России проголосовали против резолюции, Беларусь воздержалась.
Предполагается, что в течение этих 100 лет ученые-метрологи найдут способ синхронизировать изменяемое время с тем, что «воспринимает» наша планета, вращаясь вокруг Солнца. Но большинство людей вообще не заметят никакой разницы, хотя к концу этого срока разница может достичь одной минуты.
Хотя голосование IBWM установило политику игнорирования дополнительных минут, организация, которая фактически координирует и распространяет UTC, Международный союз электросвязи, потенциально может вмешаться. Тогда системные администраторы скоро узнают, какие катастрофы могут произойти из-за одной лишней секунды.
Возможно, эти тексты тоже вас заинтересуют:
→ It's a mod, mod world: как моддинг произвел революцию в разработке игр
→ Немецкая игровая консоль из 1990 года: Game Master от компании Hartung. Интересная находка с барахолки
→ Как разбить видеокарту и поделиться с коллегами? Динамический шеринг GPU в Kubernetes с помощью MIG, MPS и TimeSlicing
Комментарии (32)
i273
27.11.2023 14:40+1ха! помню было время паники в 1999, компьютер переведет дату на 2000 или же все рухнет, а тут оказывается такое из-за секунды
lorc
27.11.2023 14:40+5Так оно не рухнуло потому что все напряглись и исправили проблему до наступления 2000 года.
DanilinS
27.11.2023 14:40+5В большинстве случаев эта проблема была сильно раздута. Это коснулось очень небольшого количества софта с хранением даты в виде 2-х цифр и кривой реализацией работы с датой. Я в это время на производстве работал. В ночь перехода у нас было организовано аварийное дежурство. И ... провели ночь в полудреме и поехали утром домой. Вообще ничего ... Правда АСКУЭ-шники утром забегали. Как оказалось у них база данных встала. У них была самописная система сбора данных со счетчиков.
lorc
27.11.2023 14:40+3Это коснулось очень небольшого количества софта с хранением даты в виде 2-х цифр и кривой реализацией работы с датой.
Но какого софта... Конечно да, у нас проблем особых не было. Но вот в Европах и США есть куча кода написанного на COBOL. Этот код отвечает за довольно важные штуки - банкинг, бронирование билетов, расчеты зарплат, выставление счетов и так далее. А вот Кобол как раз хранит год в виде 2х цифр и создавался в те времена, когда про 2000 год даже не думали. Соответственно, если бы это все не исправили, то оно бы встало. Это конечно не привело бы к техногенным катастрофам, но вставшие банки и самолеты - это тоже очень нефиговый кризис.
Правда АСКУЭ-шники утром забегали. Как оказалось у них база данных встала. У них была самописная система сбора данных со счетчиков.
А прикиньте сколько такой самописной фигни было по всему миру? И если б это не чинили заранее, то оно все встало бы разом.
Ru6aKa
27.11.2023 14:40+1Это коснулось очень небольшого количества софта с хранением даты в виде 2-х цифр
Вроде как раз так и было реализовано в Коболе, и почти вся "старая" мировая банковская система работала на нем.
Javian
27.11.2023 14:40+3Были некоторые бытовые ПК и промышленные устройства, у которых стояла микросхема часов, отсчитывающая только две цифры года.
Применение:
event1
27.11.2023 14:40+5Тоже мне проблема. Добавить новый високосный день, раз в 50000 лет, и дело с концом.
32-е мая идеально подходит, по-моему.
AVX
27.11.2023 14:40+3Эй, какой май? У нас в феврале ещë большая недостача дней! Вот добавим, будет 30 хоть раз в 4 года. Ну а там ещë немного, и наберëм чтоб каждый год было по 30.
mentin
27.11.2023 14:40И потомкам жизнь разнообразить, кто сказал что смена дней должна быть ночью, может и в полдень!
stalinets
27.11.2023 14:40+4Кто-то накопил технический долг, не изучая и не тестируя собственные системы на базовый, пусть и редко востребованный функционал. Ну и пусть отвечают за это своими деньгами. Если положено и договорено применять эти секунды коррекции, кто ж вам виноват, что вы не учли их в своём софте? Тестируйте, разрабатывайте патчи, переписывайте код. А продавливать административными методами то, что должно решаться тестированием, не нужно. А то так можно много чего отменить, что в современном мире и происходит.
lorc
27.11.2023 14:40+2Ну да, так можно договориться до того что вообще выбросить календарь и использовать Unix Time везде.
mentin
27.11.2023 14:40+2Unix Time уже опозорено этой дополнительной секундой, она в нем тикает дважды. Нужно True Unix Time, чтобы действительно считало прошедшие секунды. Правда, из-за того что неизвестно когда будут лишние, нельзя будет переводить будущее гражданское время в Unix Time и наоборот.
RTFM13
27.11.2023 14:40+11Решение элементарное и очевидное. Круглое катить, квадратное тащить, а не наоборот.
Надо время хранить атомное начиная с любого момента без поправок. Т.к. оно линейное и непрерывное в рамках задачи, то никаких технических траблов с ним нет и любой момент времени однозначно идентифицирован на этой шкале. Да и операции проводить с ним куда проще.
А UTC сделать часовым поясом, к которому прибавлять и убавлять сколько и когда надо (как и к остальным часовым поясам). При чем названия часовым поясам сохранить. Т.е. называется он "UTC+1", хотя по факту может быть, например, "UTC+1:00:02".
А уж модификация часовых поясов давно поставлена на поток.
Со временем показания разойдутся, но это не будет проблемой, т.к. для человекочитаемого времени используются часовые пояса. Да и будет это не очень скоро.
Nick0las
27.11.2023 14:40+3Отличная идея, хотя всех проблем (непредскащуемость формулы пересчета наперед) не решает.
dmitrmax
27.11.2023 14:40Можно подумать, что сейчас политики, принимающие и отменяющие решения о переходе на летнее время, предсказуемы. Всё это учитывается обновлением таймзон.
RTFM13
27.11.2023 14:40+1А она есть эта проблема? Зачем нужна точная привязка системы остсчета времени к положению земли относительно солнца?
Если вы измеряете вращение земли, ну измеряйте его в радианах в секунду. При чем тут система отсчета времени вообще? Тем более, что само понятие вращения условное, Завтра вы захотите определить вращение с точностью не до секунды, а до наносекунды и устанете саму ось вращения определять.
Человекочитаемое время нужно чтобы деятельность человека осуществляемая по определенному расписанию попадала преимущественного на светлое время суткок и в целом чтобы можно было единообразно ориентироваться между светлым и тёмным временем суток. И всё. Не вижу тут вообще применения секундной точности. При этом часовые пояса являются компромисом между точностью и сложностью, по этому остановились на варианте +/- 30 минут (с шагом в час) плюс пара исключений. А с точностью +/- 30 минут вращение земли можно спрогнозировать как минимум до конца существования жизни на земле.
А то с таким же успехом можно было на зиму менять определение метра. Т.к. при низкой температуре большинство предметов сокращается, то давайте от метра пару десятых долей миллиметра откинем? а в точных рассчетах будем помечать, что это "зимний метр".
iggr63
27.11.2023 14:40Тогда и високосные дни надо отменить. И непонятно как тогда пересчитывать свой возраст и прочие похожие вещи:)
Nick0las
27.11.2023 14:40+3Все зависит от того зачем вам пересчитывать вещи "похожие на возраст". Если вы например ведете наблюдение за любым физическим процессом, будь то хоть движение планет, или спутников вокруг планет, или комет, вам надо записывать и решать дифференциальные уравнения и так или иначе вычислять временные интервалы (у вас ведь есть ряд наблюдений привязанных к моментам времени). Вам нужно время по максимально точным часам, время привязанное к положению солнца на небе вам не особо удобно. И вычислять временные интервалы удобнее в шкале с полским временем а не в формате ЧЧ:ММ:СС. А если у вас в минуте 60 секунд но есть очень редкие особые минуты в которых 61 секунда, или 59, то вычисление интервалов времени если вы храните время в "бытовом формате" только дополнительно усложняется.
А если говорить о вычислении возраста, то сами подумайте:Вы знаете время рождения с точностью до одной секунды?
Имеет ли смысл регистрировать момент такого протяженного во времени и недетерменированного процесса как рождение ребенка с точностью до секунды.
Как поступать с дробным соотношением длинны солнченых суток и тропического года? Ведь фактически у вас между днями рождения иногда 365 дней а иногда 366. Даже если вы дотошный, и знаете момент рождения с точностью хотябы до минуты, вопрос вычисления возраст получается несколько нетривиальным. По факту ровно N лет вам исполнится не в "время на часах как было в момент, когда вы родились" в дату рождения, через N лет после года рождения, а в момент который можно описать формулой Бытовое_время(Плоское_время(момент_вашего_рождения)+N*средняя_продолжительность_тропического_года)). Каждый год дата и время будут немного плавать, как например и время солнцестояния плавает. А если глубже копнуть и задаться вопросом что такое год, я же не зря написал "средняя продолжительность тропического года".
iggr63
27.11.2023 14:40Вы конечно правы в общем не обязательно знать свой возраст с точность до секунд или даже дней. Но вот про спутники можно отметить что их навигация привязана к движению планет.
Nick0las
27.11.2023 14:40+7Високосная секунда - отличный пример как можно простое сделать сложным в угоду желанию определенного круга лиц что-то там определять, и создать кучу проблем на ровном месте. У людей появились более точные, часы чем вращение земли, ясно что для отсчета времени в любых наблюдениях разумнее использовать их. "Перевод" часов на одну секунду раз в несколько лет когда неравномерность вращения земли приводит к расхождению астрономического местного времени от атомного не решает каких либо практических проблем, зато создает сложности в переводе "бытового" времени ЧЧ:ММ:СС ДД:ММ:ГГГГ в технический формат вида (N секунд) от начала отсчета. А такое перевод производится в любом компьютере в котором есть часы постоянно. Более того решения некого совета о том добавлять ли високосную секунду когда-то делают невозможным программирование алгоритма перевода наперед. Эта пробелма существует всегда, помимо проблем с синхронизацией. В бытовом плане уход времени местного полудня даже на одну минуту от текущего (который в реале займет столетия) не решает вообще ничего. В плане каких либо наблюдения это тоже ничего не решает потому что для наблюдений нужно пользоваться форматом времени в кторотм легко вычислять интервалы. И вмсето того чтобы сделать как проще, а проблему рассинхронизации с астрономическим временем, которая станет заметна через 1000 лет отложить на подумать, некоторые организации занятые стандартизацией выдумывают бессмысленные усложнения.
AVX
27.11.2023 14:40+1Ну этим людям же надо показать свою значимость. Хоть так, чтоб внимание обратили.
А вообще раз в тыщу лет прибавить минуту, да хоть час - совсем не проблема. За это время может поменяться всё, может и компов-то в современном понимании не будет, и ещё сто раз поменяют форматы времени и как его считать.
Tavrid
27.11.2023 14:40Это дискуссия из серии метрических (10-тичных) и имперских (12-ричных) мер и весов.
Я считаю, в итоге через победит какая-нибудь новая универсальная система измерения времени, не привязанная к дням, неделям, месяцам, годам (особенно с учетом смещения дат праздников и конкретных климатических условий к которым они были привязаны тысячелетия назад). А для дат до ~2100 года будет формула пересчета, как сейчас дичайшая обратная шкала для дат "до нашей эры", которая ведется от акта рождения одного известного лица. Или будет начата новая-новая эра отсчета времени, и тогда будет совсем сложно вести пересчет дат более 2 тысяч лет. Вполне возможно уже нужно было бы его придумать и начать эксплуатацию, тем самым застолбив Стандарт.
Didimus
27.11.2023 14:40Использовать 1-ричную систему. Сколько палочек - такое и число. Самая натальная
sepuka
27.11.2023 14:40Имперские средства измерения и изготовления (линейки, штангенциркули, лимбы у станков), кстати, чаще делили на 10. Вернее, у металлообрабатывающий станков лимб обычно делился на 10 + нониус на 10 (разрешение 1/100"), у большого штангенциркуля деление на 40 + нониус на 25 (разрешение 1/1000"), у маленького деление на 16 + нониус на 8 (разрешение 1/128"). На 24 делилась линейка метранпажа в полиграфии, это немного другая предметная деятельность. А на 12 любили делить французы, там да, моден был лимб 12 + нониус 12 (разрешение 1/144"), так что на самом деле достаточно странно, что метрическая система пошла именно от них. Просто там случилась революция и начали ломать всё, от календаря до средств измерения, а смотрящих в изумлении производителей с вопросом «что нам делать с имеющимся оборудованием» во-первых, было меньше, и они были мельче, чем в той же Британии, а во-вторых, их можно было легко переубеждать методом гильотинирования.
LiVN
27.11.2023 14:40+1Мы уже давно не живём по астрономическому времени. После революции в России, позднее в СССР ввели так называемое "декретное" время. Происходило это следующим образом. Впервые летнее время в России было введено 1 июля 1917 года, когда в соответствии с декретом Временного правительства стрелки всех часов в России были переведены на один час вперед — до особого распоряжения, которое и последовало 28 декабря в виде декрета уже Совнаркома.
Однако 31 марта 1918 года СНК РСФСР постановил снова перевести стрелки часов — на два часа вперед. Это время и получило название летнего. На зимнее время РСФСР перешла 17 сентября 1918 года путем перевода стрелок на один час назад. 31 мая 1919 года стрелки снова перевели на час вперед. А 1 июля отняли от часа 31 минуту и ввели так называемое поясное время. Но уже 16 августа последовал переход на зимнее время (перевод стрелок на час назад). Следующий переход на летнее время произошел только 21 февраля 1921 года, когда стрелки снова перевели на час вперед, а уже 20 марта стрелки часов были переведены вперед еще на один час. 1 сентября стрелки перевели на час назад, 1 октября произвели ту же операцию. Следующий перевод стрелок, на час назад, состоялся 1 октября 1922 года. 21 июня вслед за очередным введением поясного времени стрелки снова перевели на час вперед. Это время стало называться декретным. Очередное введение летнего и зимнего времени состоялось в 1981 году. 31 марта 1991 года было отменено декретное время: часы единовременно были переведены на час назад, а 29 сентября их снова перевели на час назад, ознаменовав тем самым введение поясного времени и полную отмену летнего. Однако уже 19 января 1992 года декретное время было восстановлено. Так продолжалось до 1997 года. И это только в России. Официально установленное время в городах и странах. Например, зимой в России официальное время на 1 час опережает поясное, а летом (в период введения летнего времени) - на 2 часа. в 2011 году в России законом «Об исчислении времени» понятие местное время введено в официальное обращение фактически взамен понятий поясное время и декретное время. Так, что рассуждения на секунду, с точки зрения людей в повседневной жизни выглядит обсурдом. Государства, отдельные города давно играют часами. Примеров много, как и стран. Астрономическое время изначально неравномерно и не линейно, зависит от многих факторов. Время определенное по "атомным" часам линейно (покрайней мере мы так считаем исходя из уровня развития науки в этой области на сегодняшний день) и попытка синхронизации двух временных интервалов некий обсурд, так как астрономическое время вычисляется с учётом многих параметров. Единицей измерения времени в астрономии служат сутки - промежуток времени, в течение которого Земля делает полный оборот вокруг своей оси относительно какой-нибудь точки на небе. В зависимости от этой точки отсчета различают звездные сутки - промежуток времени между двумя последовательными одноименными кульминациями точки весеннего равноденствия, и истинные солнечные сутки - промежуток времени между двумя последовательными одноименными кульминациями центра Солнца. Солнечные сутки примерно на 4 минуты длиннее звездных, так как Солнце двигается среди звезд в сторону вращения Земли, и для того, чтобы его догнать, Земле надо сделать относительно звезд чуть больше одного оборота. Для измерения больших промежутков времени используют тропический год - промежуток времени между двумя последовательными прохождениями центра Солнца через точку весеннего равноденствия. Для измерения времени можно использовать как звездные, так и истинные солнечные сутки. Если используются звездные сутки, измеряемое время называют звездным временем, а если истинные солнечные сутки - то истинным солнечным временем. Однако это не означает, что мы измеряем два каких-то независимых друг от друга времени. Фактически, это как бы две разные линейки для измерения ввремени. Резюмирую выше приведенное, можно однозначно прийти к выводу, что дополнительная "секунда" надумала проблема. Человечество не всегда заморачивалось такими проблемами, например, Юлианский и Григорианский календари, к 1918 году расхождение в 13 суток. И таких примеров много, как в прошлом так и в настоящем. Так, что и этот вопрос решат.Javian
27.11.2023 14:40При чтении воспоминаний при запуске советских автоматических станций к планетам попадался еще один вариант времени, который я не мог на гуглить. Сейчас название не вспомню, но осталось впечатление, что это было специфичное применение только в космонавтике и соответствовало зимнему времени, которое никогда не переводили на летнее. Интересно было бы узнать так ли это было или я неправильно понял автора воспоминаний.
Rsa97
Надо просто на секунду останавливать все компьютеры в мире, потом продолжать, как ни в чём не бывало.
Doctor_IT Автор
Хорошая идея, надежная как швейцарские часы)