All about Linux swap space

Published on Jul 12, 2024

Linux

Linux 交换空间(swap space)是一种用于辅助物理内存的机制,它允许系统将不活跃的内存页面临时存储到硬盘上,以便释放物理内存资源。交换空间可以是独立的交换分区或者交换文件,它们都需要通过特定的命令进行格式化和激活。合理配置交换空间对于系统性能和稳定性至关重要,尤其是在物理内存不足的情况下。

摘要

Linux 操作系统通过将内存页面复制到预配置的硬盘空间,即交换空间,来管理内存资源。这个过程称为交换。交换空间可以是交换分区或交换文件,两者都可以通过 swapon -s 命令查看其状态。交换分区是硬盘上的一个独立区域,专门用于交换操作;而交换文件则是一个特殊的文件,位于文件系统中。

交换空间的配置和使用对于系统性能至关重要。当系统内存不足时,内核会交换出不常用的页面,以便为当前需要的应用程序提供内存。此外,一些在应用程序启动时仅用于初始化的页面也可能被交换出去,从而释放内存供其他应用或磁盘缓存使用。然而,交换操作的一个缺点是磁盘的速度远慢于内存,频繁的交换(特别是交换颠簸)会显著降低系统性能。

为了增加交换空间,可以通过将分区标记为交换类型并使用 mkswap 命令来准备交换分区。同样,可以使用 dd 命令创建交换文件,并通过 mkswap 对其进行格式化,然后使用 swapon 命令激活。在 /etc/fstab 文件中添加相应的条目可以确保在系统启动时自动挂载交换空间。

关于交换空间的大小,并没有固定的规则,但通常建议桌面系统配置物理内存的两倍,服务器配置一半,以便在内存不足时有一定的缓冲。Linux 2.6 内核引入了一个名为 swappiness 的参数,用于调整内核交换行为。该参数的值范围从 0 到 100,较高的值会导致更多的页面被交换出去,而较低的值则会保留更多的应用程序在内存中,即使它们是空闲的。

观点

  1. 交换空间是 Linux 系统管理内存的重要方式。当物理内存不足时,内核会将不活跃的页面交换到硬盘上,以此来为需要内存的应用程序释放资源。

  2. 交换空间可以是分区或文件。交换分区是一个独立的硬盘区域,而交换文件则是一个在文件系统中的特殊文件。两者都可以通过 swapon 命令激活,并通过 swapon -s 查看状态。

  3. 交换颠簸会降低系统性能。由于磁盘速度远慢于内存,频繁的交换操作会导致系统变慢。在这种情况下,增加物理内存是解决问题的有效方法。

  4. 添加交换分区或文件需要特定的步骤。首先,需要确保分区被正确标记为交换类型,并使用 mkswap 命令进行格式化。然后,可以通过 swapon 命令激活交换空间,并在 /etc/fstab 文件中添加条目以便自动挂载。

  5. 交换空间的大小取决于系统的使用场景。一般来说,桌面系统可以配置为物理内存的两倍,服务器则配置为一半,以便在内存不足时提供一定的缓冲。

  6. swappiness 参数影响交换行为。该参数控制着内核交换不活跃页面的倾向。较高的 swappiness 值会导致更多的交换操作,而较低的值则会保留更多的应用程序在内存中。

  7. 合理管理交换空间对于系统性能至关重要。系统管理员应根据实际情况调整交换空间的大小和 swappiness 值,并监控系统性能以确保系统能够满足需求。

Read Original Article

《Maeiee成长感悟》- 从北漂到准父亲的生活洞察

生活在快速节奏的都市,作为程序员和即将迎来人生新角色的我,经历了无数难忘的瞬间和深刻的思考。这些体验和感悟,我渴望与你分享。

《Maeiee成长感悟》是一个收集我所有重要生活事件和心得的地方。每一篇文章都是对过去经历的反思和对未来生活的展望,真实记录作为一个程序员、副业探索者、终身学习者、一个准爸爸和一个北漂的多重身份之间的平衡与挑战。

这里没有华丽的辞藻,只有最真实的思考和感受,希望它们能触动你的心弦,也许能在你的生活旅程中提供一些启示和慰藉。