Popular Mechanics: Google потратит 20 часов на решение проблемы високосной секунды
2016-й год продлится немного дольше, чем обычный земной год — 31 декабря к нему добавится високосная секунда, которая компенсирует чуть замедленное вращение планеты. Такое происходит достаточно часто — в прошлый раз високосную секунду добавляли 31 июля 2015 года. Люди столь незначительного изменения во времени даже не замечают. Зато високосная секунда становится настоящей проблемой для компьютеров: если мы можем просто приплюсовать секунду в уме, то с их точки зрения лишняя секунда в минуте — это что-то непостижимое. Popular Mechanics рассказывает, как с этой проблемой справляется Google.
Високосная секунда используется, чтобы компенсировать разницу между астрономическим временем и универсальным (UTC), которое используется в часах. Необходимость введения високосной секунды регулируется Международной службой вращения Земли — как правило, она добавляется, если разница между астрономическим временем и UTC за год составила более 0,8 секунды.
Проблема високосной секунды для компьютеров — что-то вроде знаменитой «проблемы 2000»: перед наступлением 1 января 2017 года часы должны будут показать непривычное время — 23:59:60. Причем машинам нужно объяснить, что это разовое событие, которое к тому же в разных часовых поясах произойдет в разное время.
Периодически високосная секунда приводила к серьезным сбоям. Самый известный произошел в 2012 году, когда лишняя секунда привела к ошибке Linux, что в свою очередь сломало несколько популярных сайтов, в том числе Reddit.
Основную проблему високосная секунда представляет для компаний, поддерживающих протоколы сетевого времени (NTP) — например, Google, чей протокол используется для синхронизации часов на компьютерах и других электронных устройствах. Проще всего было бы добавить лишнюю секунду серверам синхронизации, но, как уже говорилось выше, машины не в состоянии понять саму идею «лишней секунды». Поэтому компаниям приходится придумывать более изобретательные решения.
Так, в 2016 году Google объявил, что «размажет» високосную секунду по 20 часам: десяти до наступления 1 января 2017 года, и десяти — после. В течение этих двадцати часов время на серверах компании будет идти на 0,0014% медленнее, чем обычно. В результате к 10 утра UTC 1 января разница во времени будет компенсирована, а мы, если все пройдет хорошо, ничего не заметим!
20 часов = 1200 минут = 72000 секунд. Умножаем 72000 секунд на 0,0014 — получаем 1,08 секунды. Лишние восемь сотых секунды, скорее всего, объясняются тем, что разницу в 0,0014 процентов предварительно округлили для удобства.