🥸 10 миллисекунд до шелла. Черти из BSD снова показали, как надо писать код
На FOSDEM 2026 разработчики NetBSD🥸 показали, что происходит, когда инженеры с 30-летним стажем решают убрать вообще всё, что мешает процессору работать. Выкатив проект smolBSD... максимально переосмыслив то, как виртуальная машина должна общаться с гипервизором.
Инженеры пошли путем радикального минимализма. Они выкинули всю шелуху вроде GRUB и BIOS, заставив гипервизор грузить ядро напрямую, без лишних прелюдий и инициализации виртуального железа. Но этого показалось мало. Оказалось, что даже эмуляция обычного Serial-порта слишком медленная, потому что печать каждого символа вызывает VM Exit. Поэтому они выпилили эмуляцию серийника и внедрили нативный драйвер viocon (VirtIO Console). Теперь консоль работает напрямую через память, не дергая гипервизор по пустякам👍
Второй уровень оптимизации... отказ от сканирования шины PCI. Вместо того чтобы ядро при загрузке опрашивало устройства, они передают адреса VirtIO-устройств (диск, сеть, консоль) жестко через MMIO прямо в командной строке ядра. Драйверам не нужно ничего искать, они сразу знают адреса в памяти. А чтобы не ждать инициализации сети и DHCP (это же целые секунды!), они использовали механизм QEMU fw_cfg. Это интерфейс, который обычно используется для передачи конфигов в BIOS, но здесь через него пробрасывают файлы и скрипты прямо в память гостя. В демо они показали, как с хоста через обычный сокет отправляют команды внутрь микро-VM, и она отвечает мгновенно, работая по сути как обычный процесс, но с полной изоляцией ядра.
Еще они запилили сборку этих микро-образов через обычный Dockerfile. Вы пишете FROM base, добавляете пакеты через pkgin, и на выходе получаете загрузочный образ, который стартует за 10 мс. Глядя на это, хочется стереть все эти тяжелые кубернетесы и вернуться к инженерным истокам... без лишних слоев абстракции, на чистом ассемблере и Си 😎
Типичный 🥸 Сисадмин
Post #28202
14.4K