让 Ubuntu Server 使用更少的交换空间和更多的实际 RAM

让 Ubuntu Server 使用更少的交换空间和更多的实际 RAM

我有一台服务器,里面有 128 GB 的 RAM 和 100 GB 的硬盘。它在 rsyncing 磁盘时似乎使用了相当多的交换空间,而不是实际的 RAM。我在 Stack Overflow 上找到了其他有类似问题的问题,但没有一个有真正的解决方案。这是“glances”的输出:

图片

服务器通常不会使用 128 GB 的 RAM,因此禁用交换是否安全?这会提高系统速度还是会破坏某些东西?

或者我可以告诉 Ubuntu 使用物理 RAM,而不是使用交换?

答案1

在你的 Ubuntu 服务器上,你总共有1.38 GB 的交换空间用于 128 GB 的 RAM

在你的截图上系统使用 970 MB 交换空间和 14.9 GB RAM,在我看来,这是系统使用的标准交换量,远少于 14.9 GB 的 RAM。

然而,避免交换 Linux 内核是一个合理的做法,因为就其对系统性能的整体影响而言,这实际上是一个“昂贵”的过程。

这里我建议调整系统的 swappiness 量,请参阅以下信息Ubuntu 常见问题解答

什么是 swappiness 以及如何改变它?

swappiness 参数控制内核将进程从物理内存移出并移至交换磁盘的趋势。由于磁盘比 RAM 慢得多,因此如果进程过于频繁地移出内存,这会导致系统和应用程序的响应时间变慢。

  1. swappiness 的值可以在 0 到 100 之间

  2. swappiness=0 告诉内核尽可能避免将进程交换出物理内存

  3. swappiness=100 告诉内核积极地将进程从物理内存中交换出来,并将其移至交换缓存

Ubuntu 中的默认设置是 swappiness=60。降低 swappiness 的默认值可能会提高典型 Ubuntu 桌面安装的整体性能。建议使用 swappiness=10,但您可以随意尝试。注意:Ubuntu 服务器安装与桌面系统的性能要求不同,默认值 60 可能更合适。

检查 swappiness 值

cat /proc/sys/vm/swappiness

更改 swappiness 值临时更改(重启后丢失) 可以将 swappiness 值设为 10

sudo sysctl vm.swappiness=10

使改变永久化,用你喜欢的编辑器编辑配置文件:

gksudo gedit /etc/sysctl.conf

搜索 vm.swappiness 并根据需要更改其值。如果 vm.swappiness 不存在,请将其添加到文件末尾,如下所示:

vm.swappiness=10

保存文件并重新启动。

相关内容