小内存 NixOS 的占用,可以拆成“内核、常驻服务、构建时内存、磁盘闭包”四层来看。一份针对 KVM VPS 的 NixOS 26.05 配置记录,给出了… · @BaiBtw · TwKit
@BaiBtw
小内存 NixOS 的占用,可以拆成“内核、常驻服务、构建时内存、磁盘闭包”四层来看。一份针对 KVM VPS 的 NixOS 26.05 配置记录,给出了这些具体做法与边界: ① 内核:少加载,也少预留 initrd 的 availableKernelModules 列为 virtio_pci、virtio_blk、ext4,并关闭默认模块集合;系统模块树另行裁剪,同时保留依赖。文中模块数量从 89 降到 54,模块树磁盘体积从 162MB 降到 45MB。 另一个变化是关闭透明大页:该测试在 896MB 虚机上,THP 的 madvise 模式把 vm.min_free_kbytes 提到 41108,关闭后为 3710。减少这种预留能改善可用内存,但大页对其他工作负载可能有价值。 ② 服务:把常驻改为按需或定时 sshd 改为 socket 激活;时间同步改为启动后及每小时运行一次的 busybox ntpd,而非常驻 timesyncd;DNS 使用 cloud-init 写入的 resolv.conf。最终常驻用户态进程合计约 40MB PSS。 这些改动依赖运行环境:原文特别限定了 KVM 场景,并提醒公网 SSH、时间同步等情况不能直接套用。 ③ 构建:压缩冷页与回收堆内存 zram 使用 zstd,逻辑容量按内存的 100% 设置、上限 512MB,并不等于开机就占掉 512MB 物理内存;该次 512MB 重建中,zram 实际占用峰值为 116MB。 swappiness=180 配合页面回收参数,让冷匿名页优先进入压缩交换区。另一组 2GB 虚机测试调整 Nix 的 Boehm GC 参数后,模块求值峰值从 599MB 降到 548MB,不能把它与 512MB 重建测试混为一组。 ④ 磁盘缩减另算一笔 关闭部分文档、默认包和工具后,系统闭包从 963MB 缩到 910MB,压缩镜像从 607MB 缩到 477MB。这是磁盘指标,不是节省了同样多的运行内存。 记录在第二次启动后数分钟、无人登录时测量,空闲状态下的已用内存由约 288MB 降到 96MB;配置后的 512MB 虚机完成同版本更新与重建,报告峰值 371MB。但跨发行版升级仍可能 OOM,旧系统代际继续运行不代表升级成功。 以上是特定模板的自报测试,未作独立复测。配置还关闭了部分审计、诊断及硬件功能,节省资源伴随能力取舍,不是适用于任意生产机器的通用配置。
曝光 15 · 评论 0 · 点赞 0 · 书签 0
查看原帖