我记得对于交换分区的选择,我们至少应该使用(交换> 2xRAM)。当然它不推荐使用,因为计算机的内存最大值非常高。内核支持它。
我的问题:我记得每个交换分区最多支持2G,这意味着如果你有2G内存,你应该创建2个2G交换分区。内核解决了吗?这意味着我可以为一个分区创建 4G 交换空间吗?
答案1
要么你记忆力太强,要么你一直在阅读过时的文档。曾经有 2GB 交换大小限制(在大多数 32 位平台上),但多年来这种情况一直没有发生。该限制在 2.2 内核系列中的某个时刻被删除。
答案2
如果 RAM 中容纳不下某些内容,交换区就会“溢出”。您不希望永远使用它(除非情况紧急或非常不寻常的工作负载),因为磁盘比 RAM 慢很多很多倍。因此,您应该做的是找出内存使用的变化程度,配置内存,以便只有不太可能的峰值使用不适合,并为所述峰值配置交换空间。在上面的内容中,工作负载、您认为“不太可能”足以付出性能代价的内容以及为极端峰值留出多少喘息空间是一种微妙的平衡行为。因此,交换空间 = 两倍 RAM 的标准经验法则完全是无稽之谈。另一方面,磁盘很便宜,除非您有相反的硬数据,否则两倍 RAM 就可以了;-)
答案3
关于 Village's Bounty,我能找到的只是 2011 年 8 月的存档邮件列表帖子,指出内核提交 r225076 之前的首选默认值是 32 GB,最多 32 个切片,总共 1 TB RAM (32^2 = 1024 )在 r225076 之后,每个切片的限制被删除,但线程继续说仍应考虑实际限制 1 TB,由于 32 位整数的大小限制。如果您继续阅读该线程,截至 2011 年 8 月 23 日的提交已将每片大小更改为 256 GB。
参见纳布尔存档线程