很多人认为 swap 是物理 RAM 内存已满时才使用交换空间 swap。这是一个错误的认知,因为 Linux 内核会将非活动页面从内存移动到交换空间 swap。

交换空间 swap 不应视为物理内存的替代。由于交换空间是硬盘驱动器的一部分,因此它的访问速度比物理内存慢。

在本教程中,说明什么是交互空间 swap,什么是 zram 以及两者优缺点,简单的总结 zram 和 swap 的区别。

什么是 swap

交换空间可以是磁盘的一个分区,也可以是一个文件。用户可以在安装时或安装后的任何时候都可以创建交换空间。

交换空间有两种用途:第一,是将虚拟内存扩大到超过已安装的物理内存 RAM 的容量。第二,是用于 suspend-to-disk 支持。

Linux 内核使用 swap 是正常的事,也是一件好事。Linux 内核会内存缓存移动到交换空间,以确保内存 RAM 为更频繁使用内存的进程提供更多可用的缓存空间。

使用 swap 也会对你有些帮助,这样可以延迟 Linux 内核 OOM Killer 机制终止进程并释放内存,让你有足够时间去应对。

Linux性能:为什么你应该添加交换空间swap | myfreax
我们知道Linux内核使用交换空间而不是RAM内存的时候会严重降低性能。既然我有足够多的可用内存,删除交换空间不是更好吗?简短的回答是不会

什么是 zRAM

zram 也称为 zRAM,先前称为 compcache。是Linux 内核的核心功能,可提供虚拟内存压缩。

zram 通过在 RAM 内的压缩块设备的分页,直到必须使用硬盘的交换空间,避免在磁盘进行分页,从而提高性能。

由于 zram 可以用内存代替硬盘为系统提供交换空间的功能,zRAM 可以在内核需要交换/分页时,让 Linux 内核更好利用内存 RAM。

zram 和 swap 哪个好

当 Linux 内核频繁将内存缓存移入和移出内存到交换空间 swap 时,磁盘 I/O 会成为一个性能问题。

而 zRAM 是在内存创建一个块设备作为交换空间,因此不会因为磁盘 I/O 造成性能下降。

zRAM 的一个缺点是它使用一些内存 RAM 和 CPU 时间进行压缩,但 zRAM 在磁盘I/O与压缩内存后所获得的收益所抵消。

1GB 的 ZRAM 可在压缩后可释放内存大约 2 到 3 GB 。这意味着 Linux 系统可以在超过总内存情况下不会发生 OOM。

Linux 性能:zRAM vs 交换空间 | myfreax
之前,我们研究了交换空间如何严重降低 Linux 性能

结论

总的来说,zRAM 具备 swap 优点并消除因为在频繁使用磁盘 I/O 的而造成的性能问题,其实 zRAM 和 swap 是可以同时存在并使用两者,Linux 内核默认优先使用 zRAM。