Замена алгоритма сортировки в ядре FreeBSD позволила увеличить скорость его загрузки в 100 раз или даже больше. Хотя первоначально это изменение было направлено на микро-ВМ, от него выиграют все пользователи.
Микро-ВМ стали активно использоваться в технологической сфере в последние пять лет. Суть этой идеи – создание ОС, предназначенных для работы как гостевые системы под другой ОС. Таким образом, гостевая ОС требует минимум поддержки реального оборудования, общаясь напрямую с ресурсами, предоставляемыми хост-гипервизором. Это позволяет сделать гипервизор гораздо проще и компактнее.
Такой подход позволяет сократить как гипервизор, так и ОС, работающую внутри него, что в свою очередь позволяет использовать гораздо меньше ресурсов и сократить время старта ВМ.
Основная коммерческая цель такого подхода – предоставление “безсерверной” вычислительной мощности, когда на практике серверы все равно где-то существуют, но пользователь работает без понимания инфраструктуры. AWS предлагает такую модель через сервис Lambda, работающий на базе собственного гипервизора Firecracker от Amazon.
Разработчик ядра FreeBSD, Колин Персиваль, решил запустить FreeBSD на Firecracker. По его словам, последнее улучшение производительности впечатляет: заменяя алгоритм сортировки, он ускорил процесс загрузки ядра FreeBSD в сотню раз, уменьшив время загрузки ядра до 25 миллисекунд.
После серии оптимизаций, о которых он рассказал позже, Персиваль заявил: “Linux загружается за 75-80 мс в той же среде, где у меня FreeBSD загружается за 25 мс”. И добавил, что ядро, которое ранее загружалось за 10 секунд, теперь загружается примерно в 400 раз быстрее.
На данный момент оптимизированное ядро основано на FreeBSD 14 на x86-64, но идут работы по адаптации для Arm64, учитывая, что AWS является крупнейшим пользователем серверов на базе Arm в мире.