为什么从 RAM 移动到交换区很快,而从交换区移动到 RAM 却很慢?
当我运行需要更多可用内存的程序时,我发现通过将未使用的(=访问最少的)页面移至交换区,RAM 被快速“清理”。
但当我跑的时候
swapoff -a ; swapon -a
将交换空间移回 RAM 需要很长时间(几 GB 的交换空间需要几分钟)。
交换是另外在 SSD 上进行的。或者swapoff -a
命令是否进行了一些我可以避免/禁用的特殊检查?
答案1
如果可能的话,您可以要求内核不使用交换,除非所有 RAM 都已使用。这是“vm.swappiness=0”选项,需添加到 sysctl.conf 中。您需要重新启动才能看到效果。
您不需要清除交换...
答案2
为了全面理解这一点,您应该阅读更多有关 Linux 中内存管理的工作原理的内容。
我的猜测是,它会经过大量的 RAM 并将其移动以进行碎片整理,这样它就可以将内容从交换移动到连续的内存块。