据我所知,交换文件的理论限制非常大,具体取决于使用的是 32 位还是 64 位系统。
我在 4GB RAM 64 位系统上制作了一个 16GB 交换文件,其他方面的平均规格很低,因为我的 1TB 内部硬盘上有足够的空间......
但是大交换文件真的会对速度/性能产生影响吗?
您最多可以拥有 32 个交换区域(文件或分区),每个区域最多约 40 亿(2^32)个页面,其中“页面”在传统(例如 x86 或 x86_64)系统上为 4kB,但在其他系统上可能更大架构,或者如果您专门配置了大页面。
这给出了每个交换区域的理论最大值 16TB,最多 32 个交换区域。在您达到此之前,可能还有其他限制适用,但这与mkswap可以为您创建的交换区域一样大。
至于您想要多少,任何超出您实际使用的最大值的交换区域都不会对系统性能或稳定性产生任何影响。诀窍是估计在正常甚至异常情况下将发生的最大利用率,并将其用作交换文件大小,仅此而已。
在撰写本文时,除非您的系统非常不正常,否则不太可能使用比物理内存大小多 4GB 左右的交换空间。在一个典型的系统上,例如一个人一次使用的桌面系统,即使您的物理内存更大,您甚至可能会停在最多 6GB 到 8GB 的空间。
它在速度或性能方面没有区别。它只允许您在 OOM 杀手开始杀死进程以回收内存之前使用最多 20 GB 的虚拟内存。
如果你想要更好的性能:
swappiness,如果你不超过4 GB的使用更加经常这个答案可能不适合 Ubuntu 18.04(感谢 @Chai T. Rex 在评论中指出这一点)。
无论如何,对于以前的版本,这里是(仍然没有建议的更新 LTS>LTS,所以这可能仍然相关):
它不是一个文件,它是一个分区,是的,它是因为交换性
swappiness 参数控制内核将进程从物理内存移出到交换磁盘上的趋势。由于磁盘比 RAM 慢得多,因此如果过于频繁地将进程移出内存,可能会导致系统和应用程序的响应时间变慢。
因此,基本上,如果您的交换分区比您拥有的 RAM 大得多,系统将倾向于交换更多内容,从而导致整体速度缓慢。