有些人会告诉你,你应该分配两倍于物理内存大小的交换空间,但这是一种错误的规则。以下是正确的方法。
估算您的总内存需求。这是您可能一次需要的最大内存量,即您想要同时运行的所有程序的内存需求总和。这可以通过同时运行您可能同时运行的所有程序来完成。
例如,如果您想运行 X,您应该为其分配大约 8 MB 的内存,gcc 需要几兆字节(有些文件需要异常大的量,高达数十兆字节,但通常大约四个就足够了),等等。内核本身将使用大约一兆字节,而常用的 shell 和其他小型实用程序可能需要几百千字节(例如总共一兆字节)。没有必要力求精确,粗略的估计就可以了,但您可能希望往悲观的方向估计。
请记住,如果有多个人同时使用系统,他们都会消耗内存。但是,如果两个人同时运行同一个程序,总内存消耗通常不会翻倍,因为代码页和共享库只存在一份。
free 和 ps 命令对于估算内存需求非常有用。
在步骤 1 中的估计值上增加一些安全余量。这是因为程序大小的估计可能不准确,因为您可能会忘记一些想要运行的程序,并且为了确保您有一些额外的空间以防万一。几兆字节应该足够了。(最好分配过多的交换空间,而不是过少,但没有必要过度分配并占用整个磁盘,因为未使用的交换空间是浪费的空间;稍后会介绍如何添加更多交换空间。)此外,由于处理偶数更方便,您可以将该值向上舍入到下一个完整的兆字节。
根据上面的计算,您知道您总共需要多少内存。因此,为了分配交换空间,您只需要从所需的总内存中减去物理内存的大小,您就知道您需要多少交换空间。(在某些版本的 UNIX 上,您还需要为物理内存的映像分配空间,因此步骤 2 中计算出的量是您需要的,您不应该进行减法。)
如果计算出的交换空间远大于您的物理内存(大几倍以上),您可能应该投资购买更多的物理内存,否则性能会太低。
即使您的计算表明您不需要交换空间,至少有一些交换空间也是一个好主意。Linux 相当积极地使用交换空间,以便尽可能多地保持物理内存空闲。Linux 会换出未使用的内存页,即使内存尚不需要用于任何事情。这避免了在需要交换时等待:交换可以更早地完成,在磁盘空闲时。
交换空间可以分布在多个磁盘上。这有时可以提高性能,具体取决于磁盘的相对速度和磁盘的访问模式。您可能想尝试几种方案,但请注意,正确地进行实验非常困难。您不应该相信任何一种方案优于其他方案的说法,因为这并不总是正确的。