你应该在 Linux 中使用多少交换?

交换大小应该是多少? 交换应该是 RAM 大小的两倍还是 RAM 大小的一半? 如果我的系统有几 GB 的 RAM,我是否需要交换?

也许这些是在安装 Linux 时选择交换大小的最常见问题。

这不是什么新鲜事。 交换大小一直存在很多混淆。

长期以来,推荐的交换大小是 RAM 大小的两倍,但这条黄金法则不再适用于现代计算机。 我们的系统的 RAM 大小高达 128 GB,许多旧电脑甚至没有这么大的硬盘。

但是,您会为具有 32 GB RAM 的系统分配多大的交换空间? 64GB? 那将是一种可笑的硬盘浪费,不是吗?

在我们看到你应该拥有多少交换大小之前,让我们首先快速了解关于交换内存的一两件事。 这将帮助您了解为什么使用交换。

为了(几乎)每个人的理解,解释已经被简化了。

什么是交换? 什么时候使用交换?

您的系统使用 随机存取存储器 (又名 RAM)在运行应用程序时。 当只有少数应用程序运行时,您的系统会使用可用 RAM 进行管理。

但是,如果运行的应用程序太多或者应用程序需要大量 RAM,那么您的系统就会遇到麻烦。 如果应用程序需要更多内存但整个 RAM 已在使用中,则应用程序将崩溃。

当 RAM 用尽时,Swap 可以让您的系统喘口气。 这里发生的情况是,当 RAM 耗尽时,您的 Linux 系统会使用部分硬盘内存并将其分配给正在运行的应用程序。

听起来很酷。 这意味着如果您分配 50GB 的交换大小,您的系统可以同时运行数百甚至数千个应用程序? 错误的!

你看,速度在这里很重要。 RAM 以纳秒的顺序访问数据。 SSD 以微秒为单位访问数据,而普通硬盘以毫秒为单位访问数据。 这意味着 RAM 比 SSD 快 1000 倍,比普通 HDD 快 100,000 倍。

如果应用程序过于依赖交换,其性能将会下降,因为它无法以与 RAM 中相同的速度访问数据。 因此,完成一项任务可能需要几分钟,而不是花费 1 秒钟。 这将使应用程序几乎毫无用处。 这被称为 捶打 在计算方面。

换句话说,一点点交换是有帮助的。 很多都没有用。

为什么需要交换?

您需要交换的原因有几个。

  • 如果您的系统的 RAM 小于 1 GB,则必须使用交换,因为大多数应用程序很快就会耗尽 RAM。
  • 如果您的系统使用资源密集型应用程序(如视频编辑器),则最好使用一些交换空间,因为您的 RAM 可能会在这里耗尽。
  • 如果您使用休眠,那么您必须添加交换,因为 RAM 的内容将被写入交换分区。 这也意味着交换大小应该至少是 RAM 的大小。
  • 避免奇怪的事件,例如程序发疯和吃掉 RAM。

如果你有很多 RAM,你需要交换吗?

这确实是一个好问题。 如果您有 32GB 或 64GB 的 RAM,那么您的系统可能永远不会使用整个 RAM,因此它永远不会使用交换分区。

但是你会抓住这个机会吗? 我猜如果你的系统有 32GB 的 RAM,它也应该有一个 100GB 的硬盘。 分配几 GB 的交换不会受到伤害。 如果错误的程序开始滥用 RAM,它将提供额外的“稳定性”层。

你可以在没有交换的情况下使用 Linux 吗?

是的,你可以,特别是如果你的系统有足够的 RAM。 但正如上一节所解释的,一点点交换总是可取的。

事实上,像 Ubuntu 这样的发行版会自动创建一个 2 GB 大小的交换文件。 这应该告诉您建议使用一些交换空间。

如果您在安装 Linux 时没有创建交换分区,请不要担心。 您可以随时在 Linux 中创建交换文件。

推荐阅读

交换文件允许您在 Linux 中动态创建和使用交换空间。 您可以根据需要轻松创建、调整大小或删除它们。

了解 Linux 中的交换文件

交换大小应该是多少?

现在来了一个大问题。 Linux 安装的理想交换空间应该是什么?

这里的问题是这个交换大小问题没有明确的答案。 只有建议。

不同的人对理想的交换大小有不同的看法。 即使是主要的 Linux 发行版也没有相同的交换大小指南。

如果你经过 红帽的建议,他们建议现代系统的交换大小为 20% 的 RAM(即 4GB 或更高的 RAM)。

CentOS 有一个 交换分区大小的不同建议. 它建议交换大小为:

  • 如果 RAM 小于 2 GB,则 RAM 大小的两倍
  • RAM 大小 + 2 GB(如果 RAM 大小超过 2 GB,即 5 GB 交换换取 3 GB RAM)

Ubuntu 对交换大小有完全不同的看法,因为它考虑了休眠。 如果您需要休眠,则 Ubuntu 需要交换 RAM 大小。

否则,它建议:

  • 如果 RAM 小于 1 GB,则交换大小应至少为 RAM 大小,最多为 RAM 大小的两倍
  • 如果 RAM 大于 1 GB,则交换大小应至少等于 RAM 大小的平方根,最多为 RAM 大小的两倍
  • 如果使用休眠,交换大小应等于 RAM 大小加上 RAM 大小的平方根

使困惑? 我知道这很令人困惑。 这就是我创建此表的原因,该表将根据您的 RAM 大小和休眠需要为您提供 Ubuntu 推荐的交换大小。

内存大小 交换大小(无休眠) 交换大小(休眠)
256MB 256MB 512MB
512MB 512MB 1GB
1GB 1GB 2GB
2GB 1GB 3GB
3GB 2GB 5GB
4GB 2GB 6GB
6GB 2GB 8GB
8GB 3GB 11GB
12GB 3GB 15GB
16 GB 4GB 20GB
24GB 5GB 29GB
32GB 6GB 38GB
64GB 8GB 72GB
128GB 11GB 139GB

您使用多少交换大小?

答案从来都不是简单的。 正如我之前所说,很长一段时间以来,swap 一直被推荐为 RAM 大小的两倍。 事实上,我的戴尔 XPS 13 Ubuntu 版本具有 16GB 的交换大小,可用于 8GB 的​​ RAM。 因此,即使是戴尔也决定遵循 swap=2xRAM 的黄金法则。

您喜欢 Linux 系统的交换大小是多少?