是否可以在不关闭交换文件的情况下更改其优先级?

是否可以在不关闭交换文件的情况下更改其优先级?

我有两个大型交换文件,每个大小约为 500 GB,并且一个程序使用了总共​​ 1 TB 交换空间中的大约 900 GB。这个占用大量内存的程序需要几天时间才能完成。但是,我刚刚意识到交换文件优先级不正确。swapon说:

NAME                TYPE        SIZE   USED PRIO
/dev/sda            partition 465,8G 465,8G   -1
/home/alex/swapfile file      502,9G 384,5G   -2

/home/alex/swapfileM.2 磁盘的速度为 3.5 GB/s,而/dev/sdaSATA 磁盘的速度仅为 540 MB/s。所以,我想要/home/alex/swapfile拥有优先权-1并且/dev/sda拥有优先权-2,但我真的不想中断长时间运行的进程。有没有办法在不先禁用交换文件的情况下更改交换文件优先级swapoff

答案1

我认为没有办法用现有的交换文件来做到这一点——但是,您可以在快速磁盘上创建另一个具有更高优先级 0 或 1 的交换文件(假设 /home/alex 上有空间)仍然)。

创建它与dd if=/dev/zero of=swapfile2 bs=1M count=$SIZE_IN_MEGS. (顺便说一句,你的 500 gig 交换文件很大。)

然后,您可以交换第一个 /home/alex/swapfile,但是没有意义,因为它与新的 /home/alex/swapfile2 位于同一磁盘上 - 它只会用于换入(而不是换出),直到 swapfile2 (和 /dev/sda) 已满。你也可以交换/dev/sda,但是你会遭受速度损失,直到它全部读回——如果你的内存不足,则交换回swapfile2。

如果您继续使用低内存运行,并且可以在某些时候执行此操作,则这可能对您有用,因为在换入和换出所需的时间内不需要性能,然后稍后在 swapfile2 中使用交换的内存返回,从那时起,它将运行得更快。

答案2

无需重新创建交换文件。您可以简单地在/etc/fstab中指定优先级,例如:

/mnt/ssd/swapfile 无交换 sw,pri=5 0 0

相关内容