我读到过很多地方,交换空间的经验法则是将物理 RAM 的数量增加一倍。但是,32 GB 确实看起来很多。我需要那么多吗?有了这么高的物理 RAM,我还需要它吗?
答案1
以下是 Red Hat 的一个非常好的建议:建议的系统交换空间
摘自同一链接:
在过去,建议的交换空间量随系统中的 RAM 量线性增加。但是,现代系统通常包含数百 GB 的 RAM。因此,建议的交换空间被视为系统内存工作负载的函数,而不是系统内存的函数。
另一段摘录来自页面的旧版本:
然而,考虑到交换空间通常是在安装时指定的,并且很难预先确定系统的内存工作负载,我们建议使用下表确定系统交换。
RHEL 8 表:
Amount of RAM Recommended swap space Recommended swap space
in the system if allowing for hibernation
-------------- -------------------------- ---------------------------
⩽ 2 GB 2 times the amount of RAM 3 times the amount of RAM
> 2 GB – 8 GB Equal to the amount of RAM 2 times the amount of RAM
> 8 GB – 64 GB At least 4 GB 1.5 times the amount of RAM
> 64 GB At least 4 GB Hibernation not recommended
在上表中列出的每个范围的边界处,例如具有 2 GB、8 GB 或 64 GB 系统 RAM 的系统,可以自行决定选择交换空间和休眠支持。如果您的系统资源允许,增加交换空间可能会带来更好的性能。对于具有超过 140 个逻辑处理器或超过 3 TB RAM 的系统,建议至少使用 100 GB 的交换空间。
原始 RHEL 5 表:
Amount of RAM in the System Recommended Amount of Swap Space
4GB of RAM or less a minimum of 2GB of swap space
4GB to 16GB of RAM a minimum of 4GB of swap space
16GB to 64GB of RAM a minimum of 8GB of swap space
64GB to 256GB of RAM a minimum of 16GB of swap space
256GB to 512GB of RAM a minimum of 32GB of swap space
答案2
这完全取决于你打算用这台机器做什么。例如,如果它是一台 Sap 服务器,那么是的,我会添加 32gb 交换空间(我们的机器有 128gb 内存和 32gb 交换空间)。如果你要处理大量图片和视频,那么使用少量交换空间是有意义的。32gb 可能有点过头了。
然而我不会说零交换。
万一发生内存不足的情况 - 可能是打开了一个大文件,也可能是 Firefox 中一个长时间运行的选项卡,这没关系,在这种情况下,内核 OOM 终止程序将启动并开始终止应用程序以恢复内存。在这种情况下,应用程序被终止时,您很可能会丢失数据。但是,如果您有一点交换空间,那么系统将继续运行,获取交换空间并允许系统继续运行。当大量交换发生时,系统会变慢,您会在所有交换空间耗尽之前注意到并进行调查。此外,磁盘非常便宜,那么为什么不使用交换空间呢?
任何人在不问你实际用电脑做什么的情况下就说“你不需要交换”都是在做假设。虽然你可能很少用电脑做耗内存的事情,但最好还是先问问你打算用它做什么,然后再草率地判断你“不需要”交换。在我看来
答案3
啊。这篇文章的答案错得离谱,而这却是我在谷歌上搜索“多少交换?”时第一个出现的结果之一。
首先,一个很好的参考点是Ubuntu Swap 常见问题解答
这个常见问题解答提出了一个重要的观点,但这里没有人提到,那就是(重点是我的)
有时,大型程序(如 OpenOffice、Neverwinter Nights 或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动时使用的大量页面可能仅用于初始化,之后再也不会使用。系统可以换出这些页面并释放内存以供其他程序甚至磁盘缓存使用在这些情况下,将使用 swap 来帮助系统处理任何额外的负载。
所以,swap 不只是用于休眠!这种活动,即换出未使用的页面,在某些情况下是有益的,而在其他情况下是有害的。有益的原因是它可以释放内存供系统在其他地方使用,但当换出太激进,换出您真正需要的页面时,则是有害的。在桌面系统上尤其如此,因为应用程序可以长时间处于空闲状态,但用户仍然希望在恢复时立即获得性能。控制这种激进程度的方法称为交换性
Ubuntu Swap FAQ 对此进行了简单的讨论什么是 swappiness 以及如何改变它?Ubuntu 系统上的默认值为 60,而常见问题解答建议台式机的值为 10。
所以我想说一般来说非常重要的一点是不要使用完全没有交换空间的系统,正如有些人在这个问题上所建议的那样,除非您知道系统的某些非常具体的使用场景,并且非常清楚它可能产生的后果。(就我个人而言,我不会运行没有交换的系统)在没有交换的内存不足情况下,系统将开始终止进程(通常是导致 OOM 的进程)
答案4
根据我的经验,我可以这么说:
就我使用 4GB 内存 3 年的经验来看,Ubuntu 的交换使用量约为 60MB,但只有在执行一些非常密集的任务时才会出现这种情况。几周前,我开始使用一台拥有 16GB 内存的 PC,交换使用量一直保持在 0%。我做过多次编译、视频渲染和其他密集任务。交换从未发生变化。甚至没有 1KB 的变化。
基本上,在 Ubuntu 中,内存 RAM 越多,您使用或需要交换空间的可能性就越小。16GB 的 RAM 甚至 8GB 的 RAM 都绰绰有余。我已经用 16GB PC 完成了 8 台 Virtualbox PC(每台内存在 1GB 到 2GB 之间)。我已经编译并渲染了 720p 视频,即使在这些条件下交换空间也没有改变。
话虽如此,两倍内存的规则不应该适用于基于 Linux 的系统,如果您有更多内存,则更是如此。但是,您应该拥有与 RAM 大小相同的交换大小,或者如果您计划休眠,因为休眠过程会抓取 RAM 中的所有内容并将其放在交换中,这就是为什么您需要的交换的最小大小等于 RAM 大小的原因。
另一个细节是,一些应用程序(并非全部)仍将强制从交换中读取。因此,有一点是好的。如果内存不足或 OOM,完全禁用它是非常糟糕的。此时,如果您没有交换,内核就无法换入/换出不同的 RAM 应用程序使用情况,并最终开始终止使用较少的应用程序。
如果它有助于家庭桌面决策,在 4 年多后更新这个答案后,我使用过 16gb、32gb 和现在的 64gb 内存 PC。使用仅 128MB 交换空间进行的测试表明,除非我想休眠,否则我不需要更大的交换空间。我在它们上使用过云环境、lxc、virtualbox、wine,你能想到的都有。我用 openshot、kazam、handbrake、audacity 渲染过视频。我用过 gimp、blender、Inkscape 甚至完整的 LibreOffice 套件。我甚至在 steam 上玩过,在所有这些情况下都没有使用交换空间。当然,如果您最终以某种方式使用了全部内存量,它最终会被使用,但一般来说,内存越多,需要的交换空间就越少。
仅我的观点。