我读过很多地方,交换空间的经验法则是将物理 RAM 量加倍。但是,32 GB 看起来确实很多。我需要那么多吗?这么大的物理内存,我真的需要它吗?
小智 260
这是 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
Run Code Online (Sandbox Code Playgroud)
在上表中列出的每个范围之间的边界处,例如具有 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
Run Code Online (Sandbox Code Playgroud)
pop*_*pey 206
这完全取决于您打算用机器做什么。例如,如果它是 Sap 服务器,那么是的,我会添加 32gb 交换(我们有使用 128gb ram 和 32gb 交换的盒子)。如果您正在处理大量图片和视频,那么进行一些交换是有意义的。32GB 可能有点矫枉过正。
但是我不会说零交换。
万一您用完 RAM - 可能打开一个大文件,在 Firefox 中打开一个长时间运行的选项卡,没关系,在这种情况下,您的内核 OOM 杀手将启动并开始杀死应用程序以取回内存。在这种情况下,您完全有可能因为应用程序被终止而丢失数据。但是,如果您有一点交换,那么系统将继续,获取交换并允许系统继续。随着大量交换的发生,系统会变慢,您会在所有交换耗尽之前注意到并进行调查。磁盘也很便宜,那么为什么不交换呢?
任何说“你不需要交换”而不问你你实际上用你的电脑做什么的人都是在做假设。虽然您可能对占用 RAM 的计算机几乎没有做任何事情,但在做出您不需要“交换”的草率判断之前,最好先询问有关您打算用它做什么的问题。在我的愚见
bre*_*ent 64
啊。这篇文章的答案非常错误,这是 Google 搜索“交换多少?”的第一个结果之一。
首先,一个很好的参考点是Ubuntu Swap FAQ
这个常见问题提出了一个重要的观点,这里没有人提到,那就是(强调我的)
有时,大型程序(如 OpenOffice、Neverwinter Nights 或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动期间使用的大量页面可能仅用于初始化,然后再也不会使用。系统可以换出这些页面并为其他程序甚至磁盘缓存释放内存。在这些情况下,交换将用于帮助系统处理任何额外的负载。
所以,交换不仅仅是为了休眠!这种交换未使用页面的活动在某些情况下可能是有益的,而在其他情况下则是有害的。有益是因为它可以为系统释放内存以供其他地方使用,但当交换过于激进并交换出您真正想要的页面时则有害。在桌面系统上尤其如此,应用程序可以长时间闲置,但用户仍然希望在将其恢复活力时立即获得性能。对这种攻击性的控制称为swappiness
Ubuntu Swap FAQ 在What is swappiness and how to change it?下轻松地讨论了这个问题。Ubuntu 系统上的默认值是 60,而 FAQ 建议台式机的默认值是 10。
所以,我会说,没有一个绝对没有交换空间的系统通常是非常重要的,因为有些人在这个问题上建议,除非你知道你的系统的某些非常具体的使用场景并且非常清楚后果它可以有。(就我个人而言,我不会在没有交换的情况下运行系统)在没有交换的内存不足的情况下,系统将开始杀死进程(通常是导致 OOM 的进程)
ban*_*ndi 27
可能不是。如果您打算使计算机休眠(挂起到磁盘),则至少需要 16 GB。如果您不休眠,则让几 GB 的空间用于交换就足够了(最多 4-8 个)
Lui*_*ado 20
根据经验,我可以这样说:
对于我使用 4GB 内存 3 年所见,Ubuntu 的交换使用量约为 60MB,但仅在执行一些非常密集的任务时才使用。几周前,我开始使用具有 16GB 内存的 PC,并且交换使用率一直保持在 0%。我已经完成了多次编译、视频渲染和其他密集型任务。交换从未发生过变化。甚至没有 1KB 的变化。
基本上,在 Ubuntu 中,您拥有的内存 RAM 越多,您为任何任务使用或需要交换的可能性就越小。16GB内存,甚至8GB内存都绰绰有余。我已经完成了 16GB PC 8 Virtualbox PC(每个在 1GB 到 2GB 内存之间)。我已经编译并渲染了 720p 视频,即使在这些条件下也没有更改交换。
话虽如此,两倍内存 ram 的规则不应该适用于基于 Linux 的系统,如果您有更多内存,则更是如此。但是,您应该拥有与 ram 大小相同的交换大小,或者如果您打算休眠,因为休眠过程会抓取 ram 中的所有内容并将其置于交换中,这就是为什么您需要一个与 ram 大小相等的最小大小交换。
另一个细节是某些应用程序(不是全部)仍会强制从交换中读取。所以有一点是好的。如果您遇到内存不足或 OOM 的情况,完全禁用它是非常糟糕的。此时,如果您没有交换,内核将无法换入/换出不同的 ram 应用程序用法,最终将开始杀死较少使用的应用程序。
如果它有助于家庭桌面决策,在 4 年多更新此答案后,我使用了 16gb、32gb 和现在 64gb ram PC。仅使用 128MB 的交换进行测试表明,除非我想休眠,否则我不需要更大的交换。我在它们上面使用过云环境,lxc、virtualbox、wine,你能想到的。我用 openshot、kazam、handbrake、audacity 渲染了视频。我使用过 gimp、blender、Inkscape 甚至完整的 LibreOffice 套件。我什至在 Steam 上玩过,在这些场景中都没有使用交换。当然,如果您最终以一种或另一种方式使用完整的 ram 数量,它最终会被使用,但通常您拥有的 ram 越多,您需要的交换就越少。
只有我的 2 美分。
在大多数情况下,我会说你根本不需要任何东西。也许如果您编辑非常大的图像文件,或其他需要大量内存的应用程序,您可能需要一些。
我从来没有在我的系统上看到任何使用过的,类似于你的。事实上,有一次,我不小心将其禁用了一两个星期,从未发现任何问题。但是我仍然为我的交换驱动器保留了大约 5GB,主要是因为我有超过 1TB 的可用空间,并且没有按原样使用所有空间。
如果您使用休眠模式,则可以安全地使用与您的 RAM 数量一样多的交换空间。
有关交换量的一般经验法则,请阅读此处:
https://help.ubuntu.com/community/SwapFaq
在您的情况下,我会说 4 GB 足以匹配您的 RAM。