可以将 initramfs 调出以交换磁盘吗?

dfe*_*123 7 linux memory swap initramfs

我正在使用initramfs通过 PXE 启动 Centos。已initramfs使用的内存列在/proc/meminfo或 via 中的“缓存”值中free

由于我需要计算性能数据,所以我需要知道它使用的内存是否initramfs可回收(即可以换出到磁盘)。通常,/实际使用的文件系统树中只有很小的一部分,因此initramfs可以换出大部分。

读到这个,我得到了相互矛盾的信息。一些消息来源声称它的initramfs行为类似于initrd并且基于ramfs,这意味着声称的内存不能被调出以进行交换。其他消息来源声称这initramfs基本上tmpfs意味着它可以被调出以进行交换。

哪个是真的?initramfs文件系统中未使用的部分可以调出以交换空间吗?

jof*_*fel 6

编辑:答案更新/更正。

尽管有关此主题内核文档说“Rootfs 是 ramfs(或 tmpfs,如果已启用)[...] 的一个特殊实例”,但它实际上仍然是一个 ramfs,正如代码中的简短介绍所示(rootfs 是中未提及mm/shmem.c)。

一些补丁(例如参见这里这里)被发送到Linux 内核邮件列表 (lkml)来改变这一点。但他们没有被接受。原因之一是,您通常没有在 initramfs 阶段或在嵌入式系统中启用交换。

initramfs 映像被提取到 rootfs。在用户空间(通常switch_root调用 from /init)切换到新的 root 之前,它会删除 rootfs 的内容,这样只剩下空 ramfs 的最小内存量。所以在这之后,你基本上可以忽略它的内存使用情况,它是否可以换出的问题几乎无关紧要。