我可以同时使用 zRAM 和磁盘交换文件吗?

我可以同时使用 zRAM 和磁盘交换文件吗?

我的机器有 24GB 可用 RAM,但我通常使用的内存远少于 8GB。但是,有时我会处理大型数据文件,突然需要 40GB,偶尔我会希望能够访问更多内存(最多 60GB)。这主要使用 numpy 和 Apache Arrow。

现在我有一个 20GB 的 ssd 交换文件,它运行良好,但显然速度很慢。我想用 zRAM 替换它,假设我对 16GB 进行双重压缩,那就是 32GB,加上剩余的 8GB = 40GB 的“ram”。不过理想情况下,我偶尔会使用比 40GB 更大的空间,我想知道 zRAM 中放不下的东西是否有可能进一步溢出到“传统”SSD 交换文件或分区中。

这可行吗?显然我希望 zRAM 优先于磁盘交换文件。

答案1

兹拉姆

zram本质上是将压缩的交换数据存储在内存中而不是磁盘上。它充当常规且独立的交换设备。因此,除了交换分区或交换文件之外,它还可以用作额外的交换空间,并被赋予一定的优先级。

可以使用该工具设置交换的优先级swapon,也可以/etc/fstab使用pri=价值选项。请参阅man swapon

也可以考虑 zswap

除了使用 zram,您还可以考虑另一种技术,zswap。在这里,内存也用于存储交换数据。但是,使用这种机制,您的内存将充当交换的压缩内存缓存。需要缓存的数据首先存储在 中zswap,并且仅在需要时才提交到磁盘,从而加快交换速度并减少磁盘 I/O。

答案2

或者不再使用磁盘交换: https://docs.kernel.org/admin-guide/blockdev/zram.html#writeback

使用CONFIG_ZRAM_WRITEBACK,zram 可以将空闲/不可压缩的页面写入备份存储,而不是将其保存在内存中。要使用该功能,管理员应通过以下方式设置备份设备:

echo /dev/sda5 > /sys/block/zramX/backing_dev

在设置磁盘大小之前。目前它仅支持分区。

它将把整个分区作为 zram 的后备存储,就像交换分区一样。

甚至在文件中:https://unix.stackexchange.com/questions/581243/using-loopdev-for-zram-writeback-feature

相关内容