холодный старт компьютера что это
Что такое холодный старт у ИПБ и как его сделать?
Всем привет! Сегодня обсудим холодный старт ИБП — что это такое за функция, в чем польза для компьютера, как сделать такую фичу, если ее нет. Детальнее о том, как работает ИБП для компьютера, можно почитать здесь.
Сегодня все еще можно встретить модели UPS, которые не включаются при отсутствии напряжения на входе или когда параметры входного сигнала не соответствуют допустимым — например, не такие напряжение или частота тока.
Для запуска источника бесперебойного питания нужно нажать на специальную кнопку активации, которая обычно расположена на фронтальной панели.
Холодный старт позволяет автоматически включиться и подать напряжение на ПК, даже если отсутствует входящий электрический ток.
Для питания системного блока и прочих устройств используется встроенный аккумулятор.
Это весьма полезно, так как при длительном отсутствии тока в проводах от UPS можно запитать любой девайс — например, зарядить мобильный телефон.
Если такая опция не предусмотрена конструкцией UPS, то, к сожалению, ничего сделать не получится — разве что перепаять прибор, установив дополнительные микросхемы.
Замечено, что холодный старт дает сильную нагрузку на аккумуляторную батарею. При отсутствии электрического тока рекомендуется сначала включить устройство, и только через 10 секунд подключать к нему потребителей энергии.
Подписывайтесь на меня в социальных сетях, чтобы не пропустить уведомления о поступлении новых материалов. До скорой встречи!
Борьба с холодным стартом serverless-функций: «подогрев» среды и оптимизация запуска контейнеров
Основная претензия при работе с serverless — время холодного старта, которым нельзя управлять «из коробки». Если функция стартует впервые за последние 5–25 минут, скорее всего запуск будет долгим — сотни миллисекунд. Причём статически типизированные языки имеют в разы большее время холодного запуска, которое может достигать нескольких секунд. Разработчики решают это на этапе загрузки своего кода, и им в помощь есть целые библиотеки. Например, они позволяют вызвать функцию заранее. Эти способы действительно сокращают время, но не устраняют проблему полностью и могут работать нестабильно. Параллельно этот вопрос пытаются решить и сами облачные провайдеры. Сегодня поговорим о том, как с холодным стартом справляются и те и другие.
Откуда берётся время холодного запуска
Задержка запуска бессерверных вычислений «на холодную» появляется из-за того, что после получения запроса или срабатывания любого другого триггера облачный serverless-сервис, как правило, сначала загружает код и готовит среду выполнения с нужными параметрами и только потом запускает функцию. Суть проблемы можно понять по этой схеме:
Голубым обозначено время холодного запуска. Всё это время запрос в Amazon API Gateway ожидает в очереди. В зависимости от политики платформы это время до непосредственного выполнения может ещё и оплачиваться. У Yandex.Cloud в старой версии рантаймов — без специальных нововведений для уменьшения времени холодного запуска — оплачивается время старта интерпретатора и загрузка кода.
После окончания выполнения функции среда с загруженным кодом продолжает «жить» некоторое время. Если вызов функции повторить, то она стартует в той же среде гораздо быстрее.
К сожалению, временем жизни среды разработчик управлять никак не может. Платформа сохраняет выделенные ресурсы, пока они не потребуются кому-то другому (или пока не освободятся по таймауту). В итоге среда может и полчаса просуществовать, а может исчезнуть уже через несколько минут.
Очевидно, что время холодного запуска serverless-функции зависит от платформы. А для конкретной платформы оно определяется множеством факторов: языком, выделенными на функцию ресурсами, зависимостями и дополнительными пакетами. Типичный разброс времени холодного запуска serverless-функций на разных языках ещё пару лет назад выглядел примерно так:
Сравнение времени холодного запуска serverless-функций для разных рантаймов на 2019 год. Источник.
Важно учитывать, что «на холодную» стартует каждый новый поток выполнения функции. Платформы умеют использовать тот же контекст и даже иногда на короткое время ставят запросы в очередь, но управлять параметрами этой очереди разработчик не может.
С точки зрения разработки это оказывается особенно критично при резких скачках трафика: на старте распродаж, во время дневных или сезонных пиков активности пользователей (например, во время заказа обедов с доставкой). На кону лояльность большого количества клиентов, но именно в эти периоды под обработку запросов будут выделяться новые ресурсы, а клиентам придётся ждать запуска очередного параллельного потока (для запущенных потоков скорость приёма входящих запросов останется минимальной).
Приёмы оптимизации на уровне своего кода
К вопросу ускорения холодного запуска есть два подхода: со стороны платформы и со стороны разработчика. В первом случае мы ускоряем процесс до запуска контейнера включительно, во втором — после. Начнём с уровня разработки.
Здесь видно, чья оптимизация работает на каждом из этапов.
«Подогрев»
Самый распространённый способ — «подогреть» функцию. В большинстве случаев ваша среда живёт определённое время после выполнения кода, поэтому достаточно вызвать функцию чуть раньше или непосредственно перед её вызовом. Так к моменту «боевого» запроса среда выполнения будет развёрнута. В преддверии пиков трафика можно сгенерировать несколько одновременных запросов, чтобы заранее инициализировать нужное количество параллельных потоков.
Чтобы оптимизировать нагрузку и снизить стоимость «прогрева» (всё-таки вы используете ресурсы), можно различать обычные и «прогревочные» вызовы. Последние не должны выполнять весь код функции. Зачастую достаточно просто проверить связь со средой обычным пингом — для этого даже существуют специальные библиотеки, например lambda-warmer или serverless-plugin-warmup.
«Подогрев» работает хорошо, если не требуется держать функцию наготове постоянно и можно прогнозировать всплеск трафика. Но с точки зрения платформы он не даёт никаких гарантий. Библиотеки всё так же не управляют временем жизни среды исполнения и просто увеличивают вероятность быстрого ответа.
Бессерверные вычисления должны полностью освобождать разработчиков от беспокойства о масштабировании, но при использовании «подогрева функций» разработчики вкладывают в них силы и время: начинают думать о количестве запущенных потоков, времени отклика, увеличении квот и т. д. Особенно много этим приходится заниматься, когда мы начинаем ожидать большой входящий поток трафика.
Фокусы с языками и кодом
Раз уж время холодного запуска в определённой степени зависит от кода, можно заняться его оптимизацией, в частности сокращением размера пакета.
Надо учитывать, что для некоторых языков время холодного запуска меньше (например, у Node.js, Python или Go оно минимально). Пищу для размышлений на эту тему можно найти в соответствующих рейтингах.
Для кода на Java есть ещё, может быть, не самый оптимальный, но элегантный вариант ускорить «прогрев» виртуальной машины, используя универсальную GraalVM, способную компилировать функцию заранее в двоичные файлы (инструмент Native Image). Так из общего времени холодного запуска можно вычесть время «прогрева» виртуальной машины. К сожалению, этот способ не поддерживает динамическую загрузку классов и имеет некоторые другие ограничения.
Ту же схему можно реализовать на Go, который уже поддерживается в AWS и не требует экспорта конкретной сигнатуры функции. Так, код Go можно скомпилировать на локальном компьютере и запускать в serverless гораздо быстрее. Подробнее читайте здесь.
Выделение ресурсов
Время ожидания ответа serverless-функции на стороне клиента зависит также от времени выполнения самой функции, поэтому есть очевидное, но иногда вполне действенное решение — выделить дополнительные ресурсы (память и процессор выделяются пропорционально).
Хотя напрямую это нигде не описано, практика показывает, что у AWS время холодного запуска линейно зависит от выделенной памяти. Подробнее про эксперименты по исследованию зависимости времени холодного старта от выделенной памяти и размера кода можно почитать здесь. По этой статье можно примерно понять, сколько надо выделить ресурсов, чтобы сократить задержку до нужной величины.
Оптимизация на уровне запуска контейнера
Подход платформ к решению проблемы холодного запуска со своей стороны примерно одинаковый: предварительный прогрев инфраструктуры «на всякий случай».
У AWS эта опция называется Provisioned Concurrency. Она поддерживает среду и функцию в состоянии «боевой готовности», заранее развёртывая среду и запуская код инициализации. Документация AWS обещает ответ за двузначное число миллисекунд. Главное преимущество Provisioned Concurrency — гарантии со стороны платформы. Правда, за это придётся заплатить. Опция особенно полезна для языков, время холодного запуска на которых максимально (например, Java).
У Yandex Cloud Functions оптимизация встроена в последний релиз (летом этого года он вышел в статусе Preview для двух рантаймов). Здесь предусмотрен пул виртуальных машин, которые при появлении запроса поступают в распоряжение соответствующей функции. В отличие от AWS, пользовательский код в среде ещё не загружен. Но для некоторых языков (Python и Node.js) запущены интерпретаторы. В итоге время холодного старта удалось сократить в 100 раз — до нескольких миллисекунд.
Плюс в том, что Yandex.Cloud всегда использует последнюю версию рантайма — его не надо отдельно обновлять. Правда, здесь тоже есть свои ограничения, связанные с тем, что интерпретатор загружается до пользовательского кода: некоторые механизмы, например LD_PRELOAD, здесь не работают. Кроме того, нет возможности управлять интерпретатором с помощью переменных окружения. Вероятно, механизм будет ещё как-то дорабатываться, поскольку превью-версии были запущены только летом 2021 года.
Так или иначе проблема холодного старта постепенно решается. Вероятно, полностью избавиться от неё в модели «функция по запросу» не получится, но сегодня мы говорим уже о единицах и десятках миллисекунд, а не о десятках секунд, как это было ещё совсем недавно.
Что такое холодный старт
В качестве базовых понятий, на которых основана функция холодного старта, используются эфемериды и альманах. Суть этих терминов будет рассмотрена ниже. Пользователи современной техники слабо интересуются внутренними процессами ее работы. Не является исключением и навигатор, который сегодня достаточно широко используется в различных целях для получения точных координат.
Механизм действия этого прибора очень прост. За счет пары движений пальцами можно за минуту набросать будущий маршрут. После включения устройство за секунды определяет точное координатное расположение своего владельца.
Чтобы разобраться с характеристиками технической стороны, которые присущи данному виду техники, и тем более понять, как сделать холодный старт на навигаторе, мало просто ознакомиться с основной информацией, необходимой для пользования. Следует копнуть глубже как в саму терминологию, так и в строение аппарата и действие его функциональной стороны.
Основная терминология
Чтобы понять, как действует холодный и горячий старт GPS, следует разобраться с основной терминологией. Каждая сфера техники и науки насыщена терминами. Несмотря на относительную загадочность впервые услышанного слова, при разборе значения оно приобретает вполне понятный и осознанный смысл.
Теорией космической навигации рассматриваются:
Как уже упоминалось ранее, горячий и холодный старт зависят от терминологии. Рассмотрим более подробно понятия альманаха и эфемерид.
Каким образом используется в навигации альманах
С термином «альманах» знакомы многие. Причем впервые это слово можно было услышать в школе. По сути, альманахом считается своеобразный справочник, содержащий в себе основные информационные данные астрономического значения. К таким данным относятся положения небесных тел в космическом пространстве, специфика привязки их движения к календарным дням. Старейшим альманахом на Земле считается книга «Тун Син» из Китая.
Ко времени появления навигаторов, которые имеют горячий и холодный старт, ничего не изменилось в назначении альманахов. Изменения претерпели только сами данные, точнее их количество. С учетом развития современных технологий, а также особенностей функционирования сложнейшей техники, данные в альманах стали более обширными и точными.
Альманах, используемый в современной космической навигации, представляет собой набор данных, включающих информацию обо всех основных орбитальных параметрах, в рамках которых осуществляется движение спутников по навигационной системе.
Альманах имеет шесть орбитальных параметров, принадлежащих спутникам. Причем каждый из них действителен на определенный период времени. Каждый спутник этой системы обладает данными о других спутниках. В результате этого навигатор, устанавливая связь всего лишь с одним из них, при получении альманаха «узнает» данные обо всех других их орбитах.
При загрузке альманаха в память навигатора пользователь может применять эту информацию на протяжении 30 дней. Несмотря на это, уточнение данных происходит гораздо чаще. Этот процесс осуществляется во время соединения с одной из существующих наземных станций один раз в несколько суток.
Специфика эфемерид
Холодный старт руководствуется и такими данными, как эфемериды. Они используются для вычисления орбитальных отклонений, коэффициентов возмущений и прочего. Другими словами, эфемериды не только помогают определять местоположения спутников, но и дают возможность делать это с высокой точностью.
Те эфемериды, которые несут самые точные данные, быстрее всего устаревают. Активность этой информации длится всего лишь 30 минут. Обновление этих данных также осуществляется за счет наземных станций.
Важность этих данных для того, чтобы совершать горячий или холодный старт в навигаторе, очевидна. Без информации о местоположении навигационных спутников нельзя определить координаты приемника. Для этого требуется четыре спутника.
Алгоритм, применяемый в работе навигатора
Понять общие принципы, по которым происходит холодный старт в навигаторе, несложно. Но если говорить об алгоритме, действующем в самом устройстве, то он может быть только общим. Углубленными знаниями могут обладать только сами разработчики навигатора.
В целом, действие у этого устройства следующее:
Особенности холодного старта
При включении навигатора впервые или же после долгого перерыва в работе срабатывает холодный старт. Пользователю приходится ожидать некоторое время, пока будут получены собственные координаты. Это и будет время холодного старта GPS.
Длительность периода ожидания зависит от различных причин:
В целом холодный старт – это состояние навигатора, при котором его память вообще не имеет никаких эфемерид и альманаха. В некоторых случаях эти данные могут присутствовать, но они будут считаться устаревшими.
Для получения новых данных придется запустить холодный старт GPS и выполнить все необходимые манипуляции.
Алгоритм действия холодного старта
Для получения новых данных навигатору требуется прохождение полного цикла.
Холодный старт при этом включает следующие действия:
С учетом того, сколько действий выполняется, чтобы «разогреть» навигатор, становится понятным, зачем при холодном старте устройству требуется время.
В целом, если проводить аналогии, такой запуск навигатора напоминает по затратам времени холодный старт двигателя.
Особенности теплого и горячего стартов
Горячий старт навигатора характеризуется присутствием в его памяти актуальных данных – активного альманаха и эфемерид. Время действия уже рассматривалось. Оно составляет 30 суток на альманах, полчаса – на эфемериды.
Возможность выполнения горячего старта существует в том случае, если питание было отключено на непродолжительный срок. Это значит, что для получения координат алгоритм включения значительно сократится.
При теплом старте работа значительно упрощается. В этом состоянии навигатор обладает актуальным альманахом, однако он нуждается в получении обновленных эфемерид.
Особенности навигатора «Навител»
«Навител» является программным обеспечением навигационного типа. Оно предназначено для различных типов устройств, в оснащение которых входит внешний или встроенный GPS-приемник. Данной программой обеспечивается загрузка карт различных стран в подробном виде.
Такие карты содержат:
Холодный старт «Навитела» подразумевает, что неизвестными показателями является время, эфемериды, позиция, альманах. Порог отключения, при котором теряются навигатором данные, составляет 70 часов и более. Этому может поспособствовать и перевозка навигатора на большие расстояния в выключенном состоянии. Процесс получения данных в этом случае уже описывался ранее. Время холодного старта может продлиться более 20 минут.
Многие водители приобретают для своих авто комплект для холодного старта Webasto. Ведь двигатель автомобиля во время простоя в холодное время года так же нуждается в разогреве, как и навигатор.
Если говорить о теплом и горячем старте навигатора «Навител», следует заметить, что схема действия аналогична. Только при теплом старте прибор активизируется уже через несколько минут. При горячем координаты вычисляются меньше чем через минуту.
Преимущества навигатора «Навител»
Существует множество аналогичных программ. Но в сравнении с ними «Навител» имеет множество преимуществ.
Функциональная сторона прибора поддерживает множество возможностей, включая определение нынешней позиции на карте, отображение ее, прокладку маршрута (ручным или автоматическим способом) и т.д.
Знаниями мы уже вооружены, давайте разбираться.
Общий алгоритм работы навигатора
Именно общий – все до мелочей знают только разработчики. Итак, после включения навигатор начинает совершать попытки установить связь с одним из навигационных спутников.
Первый же спутник, с которым связь была установлена, передает навигатору альманах, в котором содержится информация про основные параметры орбит каждого спутника орбитальной группировки этой конкретной навигационной системы.
Одного спутника для определения координат мало. Для этого, например, в навигационной системе GPS их необходимо как минимум четыре. Каждый из этих четырех передает навигатору свои эфемериды – набор уточненных данных про свою орбиту.
В целом, ничего сложного, но вот так незаметно мы и подобрались к тому этапу, на котором будет раскрыта разница между двумя этими видами старта навигатора.
«Холодный» старт
Включив навигатор в первый раз или после длительного перерыва в его использовании, получения собственных координат придется ждать. Сколько? Зависит от многих факторов:
от качества приемного блока навигатора;
от количества спутников в зоне радиовидимости;
от состояния атмосферы;
от уровня электромагнитного шума на основных частотах.
При так называемом «холодном» старте навигатора, в его памяти вообще отсутствуют как альманах, так и эфемериды. А может, и присутствуют, но они безнадежно устарели.
В таком случае навигатор должен пройти полный цикл получения этих данных.
Алгоритм его действий примерно таков:
установить связь с первым из найденных спутников;
получить альманах, сохранить;
получить эфемериды от найденного спутника, сохранить;
установить связь еще с тремя спутниками, получить от них эфемериды, сохранить;
на основе эфемерид, зная местоположение спутников, вычислить собственные координаты.
Немало действий, правда? На все это необходимо время. Потому старт и называют «холодным» – навигатору нужно время на «разогрев», подготовку к работе.
«Горячий» старт
Кардинально отличается от «холодного» тем, что на момент включения в памяти навигатора уже находится актуальный альманах и актуальные эфемериды. Вспоминаем, что данные альманаха действительны 30 суток, а эфемерид – 30 минут.
Значит, старт может быть «горячим» только в том случае, когда питание отключается только на весьма непродолжительное время.
Алгоритм работы навигатора значительно упростится:
установить связь со спутниками;
если необходимо – обновить эфемериды, сохранить;
на основе эфемерид, зная местоположение спутников, вычислить собственные координаты.
«Теплый» старт
Кратко. Навигатор располагает актуальным альманахом, но все без исключения эфемериды устарели, значит, необходимо получить только их.
Расставим все по местам
Если расставить в порядке возрастания времени, необходимого для определения навигатором приемника после включения, получится такая последовательность: «горячий», «теплый», «холодный» старты.
Теперь характеристика навигатора «время холодного/горячего старта» не только не сможет смутить знающего человека, но и даст возможность продемонстрировать свои знания. А ведь все не так уж сложно!
Базовыми для понимания особенностей «холодного» и «горячего» старта являются понятия альманаха и эфемерид, которые были рассмотрены немного раньше. Кратко: альманах — общие данные о параметрах орбиты навигационных спутников; эфемериды — данные, уточняющие эти параметры для конкретного спутника в конкретный момент времени.
Знаниями мы уже вооружены, давайте разбираться.
Общий алгоритм работы навигатора
Именно общий — все до мелочей знают только разработчики. Итак, после включения навигатор начинает совершать попытки установить связь с одним из навигационных спутников.
Первый же спутник, с которым связь была установлена, передает навигатору альманах, в котором содержится информация про основные параметры орбит каждого спутника орбитальной группировки этой конкретной навигационной системы.
Одного спутника для определения координат мало. Для этого, например, в навигационной системе GPS их необходимо как минимум четыре. Каждый из этих четырех передает навигатору свои эфемериды — набор уточненных данных про свою орбиту.
В целом, ничего сложного, но вот так незаметно мы и подобрались к тому этапу, на котором будет раскрыта разница между двумя этими видами старта навигатора.
«Холодный» старт
Включив навигатор в первый раз или после длительного перерыва в его использовании, получения собственных координат придется ждать. Сколько? Зависит от многих факторов:
от качества приемного блока навигатора ;
от количества спутников в зоне радиовидимости;
от состояния атмосферы;
от уровня электромагнитного шума на основных частотах.
При так называемом «холодном» старте навигатора, в его памяти вообще отсутствуют как альманах, так и эфемериды. А может, и присутствуют, но они безнадежно устарели.
В таком случае навигатор должен пройти полный цикл получения этих данных.
Алгоритм его действий примерно таков:
установить связь с первым из найденных спутников;
получить альманах, сохранить;
получить эфемериды от найденного спутника, сохранить;
установить связь еще с тремя спутниками, получить от них эфемериды, сохранить;
на основе эфемерид, зная местоположение спутников, вычислить собственные координаты.
Немало действий, правда? На все это необходимо время. Потому старт и называют «холодным» — навигатору нужно время на «разогрев», подготовку к работе.
«Горячий» старт
Кардинально отличается от «холодного» тем, что на момент включения в памяти навигатора уже находится актуальный альманах и актуальные эфемериды. Вспоминаем, что данные альманаха действительны 30 суток, а эфемерид — 30 минут.
Значит, старт может быть «горячим» только в том случае, когда питание отключается только на весьма непродолжительное время.
Алгоритм работы навигатора значительно упростится:
установить связь со спутниками;
если необходимо — обновить эфемериды, сохранить;
на основе эфемерид, зная местоположение спутников, вычислить собственные координаты.
«Теплый» старт
Кратко. Навигатор располагает актуальным альманахом, но все без исключения эфемериды устарели, значит, необходимо получить только их.
Расставим все по местам
Если расставить в порядке возрастания времени, необходимого для определения навигатором приемника после включения, получится такая последовательность: «горячий», «теплый», «холодный» старты.
Теперь характеристика навигатора «время холодного/горячего старта» не только не сможет смутить знающего человека, но и даст возможность продемонстрировать свои знания. А ведь все не так уж сложно!
В алгоритме работы навигатора при «холодном» и «горячем» старте упоминалось о вычислении навигатором своих координат.
О том, как эти координаты вычисляются, и о большом значении малых отрезков времени поговорим в
следующей статье.