Linux Swap:理解和优化交换空间

在本文中,我们将详细讨论 Linux 中的 Swap(交换空间),包括它的基本概念、为何需要它、如何创建和管理它,以及如何优化交换空间的使用。

1. 什么是 Swap?

Swap,或称交换空间,是 Linux 系统中的一部分磁盘空间,用作虚拟内存。当系统的物理内存(RAM)使用完时,系统会把不常用的数据页(pages)移到交换空间,从而为新的数据页腾出空间。这个过程被称为“交换”或“换页”。

2. 为什么需要 Swap?

虽然现代的计算机系统通常具有大量的 RAM,但在某些情况下,系统可能会使用完所有的物理内存。例如,大型程序、多任务处理、内存泄漏等情况都可能导致 RAM 使用完。在这些情况下,如果没有交换空间,系统可能会因为内存不足而无法运行新的程序,或者被迫结束一些正在运行的程序。有了交换空间,系统可以把不常用的数据页移到磁盘,从而释放出内存空间。

此外,交换空间还可以作为系统的溢出缓冲区,帮助系统处理意外的内存需求峰值。它也可以用于支持 hibernation(休眠),在休眠时,系统的所有内存状态都会保存到交换空间。

3. 如何创建和管理 Swap?

在 Linux 中,你可以使用 fdiskmkswap 命令来创建一个 swap 分区。你也可以使用 ddmkswap 命令来创建一个 swap 文件。一旦创建了 swap 分区或文件,你可以使用 swapon 命令来启用它,使用 swapoff 命令来停用它。

你可以使用 freeswapon -s 命令来查看系统的交换空间使用情况。你也可以使用 /proc/swaps 文件来获取这些信息。

你可以使用 sysctl 命令或 /etc/sysctl.conf 文件来调整系统的交换策略。例如,你可以调整 vm.swappiness 参数来改变系统换页的积极程度。

4. 如何优化 Swap?

优化交换空间的使用主要是通过调整系统的交换策略来实现。这包括:

  • 调整 vm.swappiness 参数。这个参数的值范围是 0 到 100,数值越大,系统进行换页的积极程度越大。如果你的系统有大量的 RAM 并且很少需要使用交换空间,你可以把这个参数的

值设置得较低,例如 10 或 20。如果你的系统经常需要使用交换空间,你可以把这个参数的值设置得较高,例如 60 或 80。

  • 创建多个交换空间。Linux 系统支持同时使用多个交换空间。如果你的系统有多个磁盘,你可以在每个磁盘上创建一个交换空间,这样可以并行地使用这些交换空间,从而提高换页的速度。
  • 使用 SSD 作为交换空间。由于 SSD 的读写速度比传统硬盘快,所以使用 SSD 作为交换空间可以提高换页的速度。但是请注意,频繁的写操作可能会减少 SSD 的寿命。
  • 控制交换空间的大小。通常,交换空间的大小应该根据你的系统的 RAM 大小和工作负载来设置。如果你的系统有大量的 RAM 并且工作负载不大,你可以设置较小的交换空间。如果你的系统的 RAM 较小或者工作负载较大,你可能需要设置较大的交换空间。一般来说,交换空间的大小应该在 RAM 大小的 1 倍到 2 倍之间。

总的来说,理解和管理好交换空间对于 Linux 系统的性能和稳定性至关重要。希望通过本文,你已经对 Linux 中的 Swap 有了更深入的了解,并且知道了如何优化交换空间的使用。

关闭swap(k8s禁止虚拟内存以提高性能)

  1. sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
  2. swapoff -a #临时