我正在处理一些文件,似乎需要一个巨大的交换文件:即使 20Gb 也不够。理论上的最大值是多少?swapon
在 1Tb 文件上运行结果如下:
swapon: /mnt/big/swap.swap: swapon failed: Invalid argument
所讨论的系统是运行在 OpenStack 上的 Ubuntu VM,驱动器已挂载 NFS。不过,比这更广泛的答案也可以。
答案1
此处的错误消息可能不是来自交换文件本身的大小,而是来自其在 NFS 挂载上的位置。我认为 1 TB 交换文件没有问题。想象一下,在具有 4TB RAM 的多处理器 SMP 上会有什么样的交换!
为了交换远程文件,您可以执行以下操作:
# losetup /dev/loop0 /mnt/big/swap.swap
# mkswap /dev/loop0
# swapon /dev/loop0
答案2
微软建议,“它是计算机物理 RAM 的四倍,四舍五入到下一个 4 兆字节 (MB)。”
但我不得不同意 psusi 的观点。一定有更好的方法来处理该文件。例如,如果你可以一次抓取其中的块。我能够用这种方式解析一个非常大的 XML 文件。对于你一次只能访问一行的文件,比将整个文件加载到内存中然后解析它占用的内存更少。