当主存仍然可用时是否会发生页面交换?

当主存仍然可用时是否会发生页面交换?

我只是偶然发现一个随机问题,就像即使仍然有一些可用内存空间,Linux 内核是否会交换任何内存页面?我认为原则上不会,但 Linux 发行版在安装时通常仍然需要专用的交换分区。

换句话说,鉴于我有足够的主内存,我无法彻底使用,我是否可以取消整个交换分区并仍然获得稳定的 Linux 系统?

答案1

即使仍然有一些可用内存空间,Linux 内核是否会交换任何内存页面

查看vim /proc/sys/vm/swapiness(至少在 Ubuntu 上)。这指定了交换的频率,并且可能意味着即使内存可用,交换也会完成。找到最佳值的真正原因在很大程度上取决于操作系统的工作方式、可用内存和处理器本身。 (我的交换度指定为 60。)

从我在较新的更新中看到的情况来看,如果未指定交换分区,Linux 会使用可用存储空间自动创建 /swapfile(大小会增加到 1-2 GB)。这不会明确耗尽您的辅助存储,而只是让您的计算机运行更流畅。看看 的输出ubuntu@ubuntu:/home/ubuntu$ swapon。我的是:

NAME      TYPE      SIZE   USED PRIO  
/swapfile file      1.1G 123.5M   -2  
/dev/sda6 partition   2G   1.7G    1

这意味着您几乎可以“获得稳定的 Linux 系统”,而无需交换分区。

唯一的例外是,当您的操作系统休眠/崩溃并且您切换到另一个操作系统时,交换分区可以更轻松地重新加载半保存(或未保存)的信息。 (我不确定,但我认为这是因为交换分区包含一个/hiberfile。)

答案2

即使仍然有一些可用内存空间,Linux 内核是否会交换任何内存页面?

根据我的经验,它就是这样做的。

换句话说,鉴于我有足够的主内存,我无法彻底使用,我是否可以取消整个交换分区并仍然获得稳定的 Linux 系统?

大约 15 年前,当我第一次在我的 PC 中安装足够的 RAM(当时为 512MB)时,我停止使用 SWAP/页面文件。如果您有足够的 RAM 来满足您的需求,则根本不需要拥有或使用交换/页面文件。

我在运行无交换时没有遇到任何问题。

答案3

有一个内核参数vm.swappiness,它负责内存使用限制的百分比,之后发生交换。你可以看到

sysctl -a | grep vm.swappiness

Ubuntu 中默认为 60%。你可以这样改变它

sysctl -p vm.swappiness=10

或交换。

不要忘记,正在运行的 OOM 杀手会杀死您将来在 RAM 不足的情况下可能不想杀死的进程。

相关内容