FreeBSD теперь может загружаться за 25 миллисекунд

    0
    5


    Замена алгоритма сортировки в ядре FreeBSD позволила повысить скорость загрузки в 100 и более раз… и хотя этот алгоритм предназначен для микро-VM, этот выигрыш должен пойти на пользу всем.

    МикроVM — это горячая область технологических исследований и разработок последних пятидесяти лет или около того. Основная идея заключается в переосмыслении некоторых концепций и технологий, которые IBM изобрела вместе с гипервизором в 1960-х годах: разработка ОС специально для запуска в качестве гостей под другой ОС. Это означает создание ОС специально для работы внутри виртуальной машины и взаимодействия с ресурсами, предоставляемыми конкретным гипервизором, а не с поддельным оборудованием.

    Это означает, что гостевая ОС практически не нуждается в поддержке реального оборудования, а только в драйверах VirtIO, которые напрямую взаимодействуют с возможностями, предоставляемыми хост-гипервизором. В свою очередь, гипервизор не обязан обеспечивать эмулируемую шину PCI, эмулируемое управление питанием, эмулируемую видеокарту, эмулируемую сетевую карту и так далее. В результате сам гипервизор может стать намного меньше и проще.

    Результатом безжалостного уничтожения как гипервизора, так и операционной системы, работающей внутри него, является то, что оба конца могут стать намного меньше и проще. Это означает, что виртуальные машины могут использовать гораздо меньше ресурсов и запускаться гораздо быстрее.

    На данный момент коммерческой целью является обеспечение «бессерверной» вычислительной мощности. На самом деле «бессерверные» вычисления — это двусмысленный маркетинг: конечно, где-то в центре обработки данных действительно есть серверы. Но вместо предоставления инфраструктуры как услуги (знаменитой модели IaaS) мы предлагаем функцию как услугу. Идея состоит в том, что вам не нужно ничего знать об инфраструктуре: ваша программа вызывает другую программу, а инструменты управления создают столько экземпляров, сколько необходимо для запуска этой конкретной операции, возвращают результат, а затем удаляют виртуальные машины, используемые для запуска. расчеты. Вам никогда не нужно знать, где и как это произошло.

    Для клиента это хорошо, потому что это быстро и просто. Для провайдеров это хорошо, потому что это означает, что ресурсы снова высвобождаются гораздо быстрее и их можно немедленно повторно использовать, что означает поддержку большего количества клиентов на том же количестве оборудования.

    AWS предлагает FaaS через сервис под названием Lambda, после загадочной терминологии функционального программирования. Lambda работает на собственном гипервизоре Firecracker от Amazon, который также поддерживает бессерверное предложение Fargate.

    Firecracker основан на встроенном в ядро ​​Linux гипервизоре KVM: это само по себе является своего рода отклонением, поскольку до этого момента AWS основывалась на гипервизоре Xen. Это означает, что по своей сути это предложение Linux-на-Linux. Это прозвучало как вызов разработчику ядра FreeBSD Колину Персивалю, как мы сообщали год назад: он решил запустить FreeBSD на Firecracker. Однако, как и в большинстве вычислений в целом, общий процесс оптимизации заключается в следующем: во-первых, заставить его работать вообще; затем сделайте это быстро.

    По его словам твитнуть ранее на этой неделе его последняя оптимизация производительности впечатляет: замена алгоритма сортировки, ставшего частью процесса запуска ядра FreeBSD, примерно в сто раз быстрее, в результате чего время загрузки ядра сокращается до впечатляющих 25 миллисекунд. Это четверть одной десятой секунды.

    Этот твик — лишь последний в длинной серии, которую он описал гораздо более подробно пару дней спустя. В нем описаны предварительные изменения, необходимые для его загрузки вообще: удаление нескольких шагов инициализации, которые предполагали, что он загружается под Xen, затем запрос ACPI для определения типа и количества процессоров. Это не удалось, поскольку Firecracker не поддерживает ACPI. Затем не удалось инициализировать одну из немногих частей аппаратного обеспечения, которую он эмулирует, — последовательную консоль.

    После успешного запуска ядра проблема с использованием памяти быстро стала проблемой: Firecracker по умолчанию выделяет гостю всего 128 МБ ОЗУ из-за предположения, которое пришлось изменить. Далее следует целый список оптимизаций, каждая из которых способствовала небольшой экономии времени.

    Это интересное чтение, даже если вы не очень разбираетесь в технике. Некоторые шаги меняют вещи, которые были вполне разумным выбором для загрузки на выделенном оборудовании, что больше не имеет смысла в виртуальной среде, где машина создается, выполняет некоторую работу и снова удаляется в течение нескольких секунд.

    Персиваль прокомментировал:

    Я считаю, что Linux составляет 75-80 мс для той же среды, где у меня FreeBSD загружается за 25 мс.

    И продолжил:

    Когда я начал работать над ускорением процесса загрузки, загрузка ядра занимала около 10 секунд, поэтому сейчас мое ядро ​​загружается примерно в 400 раз быстрее, чем несколько лет назад.

    На данный момент оптимизированным ядром является FreeBSD 14 на x86-64, но ведутся работы по его переносу и на Arm64 — AWS является крупнейшим пользователем серверов Arm в мире.

    Firecracker — одна из самых известных микроVM, но есть и другие, и ее успех вдохновил разработчиков QEMU также добавить виртуальную платформу microVM. Разработчик Canonical Кристиан Эрхардт написал в блоге о том, как использовать это в Ubuntu, а поставщик онлайн-среды для разработки кода Hocus недавно объяснил, почему вместо этого он перешел с Firecracker на эквивалент QEMU.

    Мы видим множество потенциальных применений микроVM, не только в облачных сценариях. Возможность запускать одну программу, созданную для одной ОС, поверх совершенно другой ОС, без необходимости постоянно запускать полностью эмулируемую среду, может оказаться очень полезной во всех ситуациях.

    Контейнеры — очень полезный инструмент, но в них можно запускать двоичные файлы только для одной и той же ОС хоста. Запуск чего-либо еще — например, контейнеров Docker Linux на macOS — означает, что где-то в стеке спрятаны некоторая эмуляция и гостевая ОС. Чем меньше может быть виртуальная машина и чем меньше ресурсов она использует, тем выше общая производительность не только контейнеров, но и всей машины. ®



    Предыдущая статьяSamsung и только Apple доминировала на рынке смартфонов в первом полугодии
    Следующая статьяВедущий сценарист Baldur’s Gate 3 говорит, что второй акт намеренно облегчен
    Виктор Попанов
    Эксперт тестовой лаборатории. Первый джойстик держал в руках в возрасте 3 лет. Первый компьютер, на котором „работал” был с процессором Intel i386DX-266. Тестирует оборудование для издания ITBusiness. Будь то анализ новейших гаджетов или устранение сложных неполадок, этот автор всегда готов к выполнению поставленной задачи. Его страсть к технологиям и приверженность качеству делают его бесценным помощником в любой команде.