Энтузиаст ужал NixOS до 96 МБ ОЗУ и пересборки в 512 МБ

Shrinking NixOS RAM footprint and resource requirements to the bare minimum

Автор подробно описывает, как снизил потребление памяти NixOS 26.05 с 288 МБ до 96 МБ в простое и добился полной пересборки на VPS с 512 МБ ОЗУ. Помогли отключение профилирования памяти в ядре, THP, KFENCE, вырезание ненужных модулей ядра, замена systemd-resolved и timesyncd, настройка zram со zstd и тюнинг сборщика мусора Boehm. Приводится полный рабочий конфиг.

Отключение transparent_hugepage стало одним из самых больших выигрышей: при THP в режиме madvise ядро поднимает vm.min_free_kbytes до 41108, и это зарезервированная память, которую вы никогда не используете.
  1. KingMachiavelli

    Очень хотелось бы, чтобы сборка минимальных, кастомных ядер была проще. NixOS делает это отчасти сносным, но всё равно это бардак из кастомного kconfig, хаков с defconfig target и ручного вырезания нужных прошивок и модулей ядра. В ядре даже нет интерфейса, чтобы показать, какие firmware-блобы были загружены. Можно включить проверку подписей прошивок, но, видимо, всем плевать, что какие-то случайные бинарные блобы крутятся только ради того, чтобы работала вебкамера ноутбука.

    Было бы очень полезно, если бы я мог просто загрузить ядро и мгновенно получить отчёт о том, какая конфигурация ядра, прошивки и модули реально используются/нужны. Вроде бы можно сделать что-то подобное, но

  2. wrxd

    Не по теме, но TierHive, похоже, делает отличную работу. У них можно взять VPS примерно за пару долларов в год.

    Мощности будет немного (128 МБ ОЗУ, 1 ГБ диска), но если запустить Alpine или NetBSD, его можно использовать как WireGuard-пир, для хостинга небольшого сайта или для запуска пары cron-задач.

  3. yjftsjthsd-h

    > Заблокировал в чёрном списке оборудование, которого у гостя KVM никогда не бывает или которое ему не нужно

    Я немного удивлён, что это имеет значение; разве Linux не должен лениво загружать драйверы только тогда, когда видит оборудование?

Ещё за этот день

2026-11-03