128GB RAM 的实际工作交换?

128GB RAM 的实际工作交换?

我刚刚在一块新的 240GB SSD 上安装了 Ubuntu 15.04,并立即注意到安装结果中的 /dev/ubuntu-vg/swap_1 为 137GB。这似乎有点过分,甚至适得其反,但也许是 Ubuntu 安装程序选择了这个大小,因为机器有 128GB 的​​ RAM。

有没有人清楚拥有 ~140GB 的交换空间是否有用,如果没有用,那么交换空间的合适大小是多少?我确实运行 I/O 密集型二进制文件。虽然这可能不相关,但我要指出的是,这台机器是双 CPU Xeon (E5)。

参考了 Terrance 下面建议的链接后,我想将自动交换空间约 140GB 减少到约 4GB,因为它占用了安装 Ubuntu 的 240GB SSD 的一半以上!

答案1

系统内存这么大,其实不需要很大的交换分区。交换分区的大部分用途是将可能被弄脏并需要交换的内存信息交换出去,但 4GB 到 16GB 的内存空间应该足够了。

以下链接提供了很棒的信息。

https://superuser.com/questions/777907/swap-partition-size-on-a-64-gb-ram-computer-for-memory-intensive-work

答案2

虽然您需要的交换量始终取决于您的工作量,但这肯定是过多的交换量,并且几乎肯定可以归因于过于简单的“交换 = RAM * x”类型的计算。

简短的回答:在我看来,4GB 交换几乎总是足够的。

详细回答:Swap 的设计初衷是替代系统运行的时间异常地- 也就是说,进程的 RAM 使用量接近或超过了您拥有的物理 RAM 量。如果您正在运行的进程使用的 RAM 量非常可预测(例如,您已配置特定堆限制的数据库服务器),那么您的 RAM 使用量将相对稳定,并且不太可能使用交换。如果您确定进程的 RAM 使用量永远不会接近或超过物理 RAM,那么您甚至不需要任何交换。但在典型的服务器上,通常存在随机运行任务的可能性,这些任务会在一定时间内占用大量内存,当这导致 RAM 使用量接近或超过物理 RAM 时,交换将介入并防止系统终止进程或耗尽足够的缓存空间以有效运行。

我认为即使在具有大量 RAM 的系统上,4GB 交换空间通常也绰绰有余,因为我觉得如果系统已经接近极限,那么对于 1 或 2 个相对内存密集型进程来说,这足以超过物理 RAM。我感觉就好像如果你的内存不足超过 4GB,那么就出现了更严重的问题,需要通过配置内存占用大的进程来解决。占用内存明显超过 2GB 的进程通常会被编程为以某种方式自我限制内存使用,无论是通过配置还是通过智能地了解剩余的物理内存量。

当然,关于多少交换空间才“足够”的意见会有所不同。有些人会说 1GB、2GB、8GB 等。有些人会说你不需要任何具有那么多的物理 RAM(但我不同意)。

还有一件事:“休眠”需要足够的交换空间来写入所有进程内存,因此如果您的交换空间明显小于物理 RAM,您将无法休眠。在具有 128GB RAM 的系统上,您可能无论如何都不想休眠 - 仅为了休眠特权而保留那么多交换空间不仅会大量占用您的磁盘空间(尤其是对于 SSD),而且速度也会非常慢 - 想象一下在恢复时从磁盘加载 ~128GB,这将比正常启动慢得多。

相关内容