![如果正在使用操作系统,如何处理交换被关闭的情况?](https://linux22.com/image/190255/%E5%A6%82%E6%9E%9C%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%EF%BC%8C%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E4%BA%A4%E6%8D%A2%E8%A2%AB%E5%85%B3%E9%97%AD%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9F.png)
因此,我的服务器上运行着一个 10GB 交换空间,用于处理大量长时间运行的进程。我想增加交换大小,因为 RAM 有时几乎 100% 运行,并且使用了 > 3/4 的交换。
作为临时解决方案,我添加了第二个交换磁盘,其上的空间量有所增加,并提高了其优先级,以便它可以在周末接管负载,而运行不足的交换磁盘将被停用。
我现在的问题是,我的流程已运行 6 - 17 天,这对于完成至关重要。
目前,如果删除旧的 10GB 交换磁盘(通过swapoff
),则有足够的空间来弥补任何不足,但是,如果其中一个长时间运行的进程正在使用部分交换空间,它会杀死该进程吗?或者操作系统会处理它并重新分发吗?
我在 Google Cloud Compute Engine VM 主机上运行 Debian 10。
答案1
内核将很好地处理这个问题:swapoff
将导致已删除交换区中的页面移回物理内存,然后在必要时移回(未禁用的)交换设备。只要剩余的物理内存和启用的交换足以存储工作集,任何进程都不应因此而死亡。