交换分区应该有多大?

cd1*_*cd1 12 linux partition memory swap

几年来,我读到创建一个具有双倍 RAM 空间的交换分区是个好主意。今天仍然适用吗?或者这不再需要了?

我有一台内存为 8 GiB 的服务器,我需要创建一个交换分区,我想知道 16 GiB 是否太多了。

Kil*_*ilo 12

在大型系统上,8GB 的​​物理 RAM,我们通常分配 2GB 的交换空间。这些是运行 Oracle 或 PostgreSQL 的已加载数据库服务器。多年来,即使在重负载下,我也从未见过交换命中。重负载大约是 100 到 150 个用户执行大约 10,000 次 SQL 读取,每分钟可能执行 2,500 次写入。

我们还调整了交换级别以阻止交换,并关闭我们知道不需要运行的不需要的进程。(自定义 Linux 构建)

就像上面说的 Eddie,对于 4GB 以下的任何东西,1x 物理 RAM 是一个很好的经验法则。我为一家大型的财富 500 强公司定制 Linux 构建,这些是我们通常做的事情,在我为他们提供咨询的过去 5 年左右的时间里,我们没有遇到任何问题。

在较大的系统上:具有 32GB 和 64GB RAM 的 64 位 Linux,这些是我们的 Oracle 数据库服务器,我们通常会保留 2GB 的交换空间用于 Eddie 上面指出的东西 - 空闲进程将根据您的交换设置移动到交换。


KPW*_*INC 5

一个看似永恒的问题。好乡亲在Slashdot的在前段时间讨论过这一个。看看他们怎么说:

  • 磁盘空间对于现代 HDD 来说不是问题,16GB 对于现代 TB 驱动器来说仍然是微不足道的。
  • 但是,在内存管理不佳的情况下,大量交换空间可能会成为问题:

如果我在 2 小时内观看 4 GB 的电影,许多内存管理器会认为尝试缓存所有这些数据可能是一件好事。电影进行到一半时,它会认为所有其他正在运行的程序已经有一个小时没有使用了,可以安全地换出以缓存更多的 4 GB 文件。最终结果是您的一半程序在看完电影后被换出,导致系统缓慢,整个交换文件都被破坏了。

  • 最后,正确的决定应该来自内存要求,而不是大致公式:

如果您有 [足够的 RAM 来运行您每天要使用的程序],那么就没有理由使用交换。