Linux
可以將 initramfs 調出以交換磁碟嗎?
我正在使用
initramfs
通過 PXE 引導 Centos。已initramfs
用記憶體列在/proc/meminfo
或 via的“記憶體”值中free
。由於我需要計算性能數據,我需要知道記憶體使用的記憶體是否
initramfs
可回收(即可以換出到磁碟)。通常只有文件系統樹的一小部分/
實際在使用,因此大部分initramfs
可以被換出。閱讀此內容時,我得到了相互矛盾的資訊。一些消息來源聲稱其
initramfs
行為類似於initrd
並且基於ramfs
,這意味著無法將聲稱的記憶體分頁以進行交換。其他消息來源聲稱這initramfs
實際上tmpfs
意味著它可以被調出以進行交換。哪個是真的?文件系統中未使用的部分是否
initramfs
可以被調出交換空間?
編輯:答案更新/更正。
儘管有關此主題的核心文件說“Rootfs 是 ramfs(或 tmpfs,如果已啟用)的特殊實例
$$ … $$",它實際上仍然是一個 ramfs,正如程式碼中的簡短介紹所示(
rootfs
在 中未提及mm/shmem.c
)。 一些更新檔(參見例如這里和這裡)被發送到Linux 核心郵件列表 (lkml)以改變這一點。但他們沒有被接受。一個原因是,您通常沒有在 initramfs 階段或嵌入式系統中啟用交換。initramfs 映像被提取到 rootfs。在使用者空間(通常
switch_root
稱為 from/init
)切換到新的根之前,它會刪除根文件的內容,以便只保留空 ramfs 的最小記憶體量。因此,在此之後,您基本上可以忽略它的記憶體使用情況,並且是否可以換出它的問題幾乎無關緊要。