如何更改 Linux 系统的 Swappiness
内存是任何系统的关键部分。 Linux 内核知道这一点,并尝试确保系统有足够的内存可供使用。内核管理内存的一种方法是使用交换系统来创建额外的内存空间。
在本教程中,我们将讨论什么是交换、它是如何工作的,以及最后如何自定义 Linux 系统的交换。
什么是互换?
交换系统被定义为操作系统在磁盘上分配并在 RAM 不足时使用的空间。在 Linux 中,交换系统可以是专用于充当交换或交换文件的分区磁盘空间。交换系统也可以是交换分区和交换文件的组合。
当系统物理内存不足时,内核将不活动页面从主内存交换到交换系统中。这会释放主内存中的一些空间以供其他进程使用。
尽管您可以不使用交换系统,但如果您的系统 RAM 小于 4 GB 或系统具有关键性能要求,那么交换系统会非常方便,并且是推荐的选择。否则,如果您的系统需要的内存超出了系统能够提供的内存,系统就会崩溃,从而产生严重的影响。
注意:不要假设交换系统是附加内存的替代品或替代品。 Swap系统只不过是存储在磁盘中的一个分区或一个文件;它不能完全发挥物理内存的作用。如果您的系统总是内存不足,请考虑添加更多物理内存,因为增加交换系统大小不会有太大帮助。
什么是交换性?
Swappiness 是一个内核参数,允许系统管理员调整系统使用交换系统的频率。 Swappiness 定义了将非活动页面从 RAM 换出到交换系统之间的关系。
为了避免混淆,这是 Linux 手册页中的官方 swappiness 定义。
“此控制用于定义内核交换内存页面的积极程度(原文如此)。较高的值会增加攻击性;较低的值会减少交换量。值 0 指示内核不要启动交换,直到空闲页面和文件支持页面的数量小于区域中的高水位线。
swappiness 特性首次出现在 Linux 内核版本 2.6 中;它的范围从 0 到 100。 swappiness 值越高,从主内存交换到交换空间的非活动页面就越多。较低的值将导致主内存中保留非活动页面。
如何显示系统的 Swapiness 值
默认情况下,主要的 Linux 发行版将 swappiness 值设置为 60。您可以使用 sysctl 命令查看系统的 swappiness 值。
如果您的系统中没有 sysctl 命令,请使用以下命令在基于 Debian 的系统上安装它。
https://man7.org/linux/man-pages/man8/sysctl.8.html
如何更改交换值
默认交换值通常是适合大多数用例的值。但是,您可能出于各种原因想要调整该值。
没有最佳或推荐的交换值。但是,您可以使用各种工具(例如 free)来监视系统内存的性能并调整交换值,直到找到系统的最佳值。
我们可以通过编辑配置文件来调整swappiness值。即使重新启动后,此方法也会保留交换值。
为此,请使用文本编辑器打开文件 /etc/sysctl.conf,并将以下条目 vm.swappiness 的值更改为合适的值。 (如果该条目不存在,则添加该条目)。
要在运行时更改系统的交换值,请使用 sysctl 命令,如下所示: 更改交换值以适合您的最佳值。
注意: 与访问物理内存相比,访问交换空间被认为要慢得多。因此,将 swappiness 值设置为 100 并不能保证速度的提高。
结论
在本指南中,我们讨论了交换是什么以及它是如何工作的。使用本指南,您可以优化系统空间要求以满足您的使用需求。