NixOS funciona con 96 MB de RAM: cómo exprimir un VPS al mínimo
Shrinking NixOS RAM footprint and resource requirements to the bare minimum
Un usuario comparte cómo reducir el consumo de RAM de NixOS 26.05 de 288 MB a solo 96 MB en reposo, y lograr que una recompilación completa quepa en 512 MB. Ajustes como desactivar transparent_hugepage, recortar el árbol de módulos del kernel, usar zram con zstd y afinar el recolector de basura de Nix marcan la diferencia. El proceso tomó tres días y ofrece una guía detallada con la configuración completa.
Con THP en madvise el kernel eleva vm.min_free_kbytes a 41108 (3710 sin THP a 896 MB), que es memoria reservada que nunca llegas a usar.
- KingMachiavelli
Realmente desearía que construir kernels mínimos y personalizados fuera más fácil. NixOS lo hace algo sensato, pero sigue siendo un desastre de kconfig personalizado, hackeo de objetivos defconfig y empalme manual de los firmware y módulos del kernel necesarios. El kernel ni siquiera tiene una interfaz para mostrar qué blobs de firmware se han cargado. Puedes hacer algo de cumplimiento de firmas de firmware, pero supongo que a nadie le importa que se ejecuten blobs binarios aleatorios solo para que funcione la webcam de tu portátil.
Sería muy útil si pudiera simplemente arrancar un kernel y obtener un informe instantáneo de qué configuración del kernel, firmware y módulos se usan/necesitan realmente. Más o menos puedes hacer esto, pero
- wrxd
Tangencial, pero TierHive parece estar haciendo un gran trabajo. Puedes obtener un VPS de ellos por aproximadamente un par de dólares al año.
No va a ser potente (128 MB de RAM, 1 GB de almacenamiento), pero si ejecutas Alpine o NetBSD puedes usarlo como peer de WireGuard, para alojar un pequeño sitio web o para ejecutar algunas tareas cron.
- attilaolah
Estaba haciendo un experimento similar pero en bare metal, y mi cuello de botella era el disco, no la RAM, así que recortar el firmware y los módulos dio la mayor ganancia. Y compilo en un host diferente y simplemente envío los binarios a los sistemas resultantes.
Una cosa que me preguntaba es si cambiar algunos paquetes hoja a Musl ayudaría. Recompilar todo el sistema para Musl parece roto la mayoría de las veces, pero muchos paquetes hoja aún se pueden compilar de forma cruzada. Así que, por ejemplo, obtendría binarios de Caddy o OpenBao, etc.