当 RAM 可用时,Linux 使用交换

当 RAM 可用时,Linux 使用交换

我遇到了一个问题,Linux 似乎在使用交换而不是 RAM。对我来说,这似乎触发了一个错误,因为:

  1. 交换似乎是用于存储经常使用的数据,而不是很少使用的数据。
  2. 整个电脑似乎对任何命令的响应都很慢(例如打开开始菜单、切换窗口、启动新终端等)。
  3. 当我剩余 28GB(二十八)RAM(已使用 4GB)时,交换内存使用率为 100%
  4. 交换空间用于我刚刚启动的应用程序(例如 chrome、R-studio),因为当我启动这些应用程序时它会增加,而当我关闭它们时它会被释放。

有没有办法力量Linux 停止使用交换来分配新内存?我已将交换量设置为 0。

编辑:在我提出问题之前,我通过更改了 swappiness sudo sysctl vm.swappiness=0,并在 中将更改永久化/etc/sysctl.conf。这没有什么区别。我没有重新启动我的电脑,因为我有作业在运行,但正常运行时间只有 3 天。

$ cat /proc/sys/vm/swappiness
0
$ uptime
09:08:54 up 3 days, 6 min,  1 user,  load average: 1.90, 2.23, 2.45
$ uname -a
5.4.0-72-generic #80~18.04.1-Ubuntu SMP Mon Apr 12 23:26:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ free -m
              total        used        free      shared  buff/cache   available
Mem:          32022        1891         229         610       29901       29069
Swap:          2047         988        1059

EDIT2:我正在针对 postgresql DB 运行 SQL 脚本。该脚本很长,但仅由一些将数据转储到 csvs 的语句组成\copy(select ...)。我想不是 psql 在敲打交换,而是内核决定使用哪个内存?

答案1

将 swappiness 设置为零后,您可以尝试:

sudo swapoff -a && sudo swapon -a 

将交换空间转移到内存而无需重新启动计算机。

相关内容