如果当 RAM + swap 超过 RAM 容量时执行 swapoff && swapon 会发生什么情况

如果当 RAM + swap 超过 RAM 容量时执行 swapoff && swapon 会发生什么情况

如果我执行命令会发生什么

sudo swapoff -a && swapon -a

RAM 已满25GB/32GB并交换完整20GB/32GB?25+20 = 45 > 32,因此 RAM 无法容纳所有操作数据。另一方面,在交换再次打开之前,它只持续了几秒钟。

它的目标是当我不时重新启动交换时我的笔记本电脑的性能会更好,并且我希望crontab每天这样做一次。我不想担心如果内存不足会发生什么。我不关心是否临时创建了一个交换文件来包含交换分区的内容。我不希望内核终止任何进程。我能否以某种方式指示内核,如果 RAM 容量不足,它应该临时创建一个交换文件swapoff + swapon

答案1

swapoff如果 RAM 中没有足够的可用页面来存放交换文件的内容,则会出现错误

man

EXIT STATUS
   swapoff has the following exit status values since v2.36:

   0
       success

   2
       system has insufficient memory to stop swapping (OOM)

   4
       swapoff syscall failed for another reason

   8
       non-swapoff syscall system error (out of memory, ...)

   16
       usage or syntax error

   32
       all swapoff failed on --all

   64
       some swapoff succeeded on --all

   The command swapoff --all returns 0 (all succeeded), 32 (all failed), or 64 (some failed, some succeeded).

   + The old versions before v2.36 has no documented exit status, 0 means success in all versions.

相关内容