使 Ubuntu 服务器使用更少的交换空间和更多的实际 RAM

Amo*_*une 2 linux ubuntu ext4 swap

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

图片

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

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

小智 5

在您的 Ubuntu 服务器上,您总共有1,38 GB 的交换空间和 128 GB 的 RAM

在你的屏幕截图中,系统使用 970 MB 的交换空间来换取 14,9 GB 的 RAM,在我看来,这是系统使用的标准交换空间量,远少于 14,9 GB 的 RAM。

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

在这里我建议调整系统上的swappiness数量,请查找Ubuntu常见问题解答的以下信息:

什么是交换性以及如何更改它?

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

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

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

  3. swappiness=100 告诉内核积极地将进程从物理内存中交换出来并将它们移动到交换缓存

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

检查交换值

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

保存文件并重新启动。