GNU/Linux 开始使用 50% RAM 进行交换

GNU/Linux 开始使用 50% RAM 进行交换

最近(比如 1-2 个月前)我的笔记本电脑开始在短时间内(约 1 分钟)变得缓慢。

这是由于kswapd.如果能kswapd在后台先发制人地缓慢释放 RAM,我会很高兴,但是当它导致计算机变得缓慢时,这是一种痛苦。

正如您所看到的,有 15.5 GB 缓冲区/缓存,并且几乎没有任何 I/O。

top - 22:08:55 up 5 days, 10:48, 47 users,  load average: 2.97, 1.60, 1.12
Tasks: 663 total,   3 running, 640 sleeping,   3 stopped,  17 zombie
%Cpu(s): 17.5 us, 26.4 sy,  0.0 ni, 55.1 id,  0.7 wa,  0.0 hi,  0.3 si,  0.0 st
GiB Mem :     31.2 total,      0.3 free,     15.4 used,     15.5 buff/cache
GiB Swap:    158.3 total,    139.6 free,     18.6 used.      0.2 avail Mem 
Change delay from 3.0 to 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND            
1647145 tange     20   0   16.8g   3.6g 266672 R 189.8  11.4   1453:59 GeckoMain          
    125 root      20   0       0      0      0 S  54.8   0.0  27:56.87 kswapd0            
   9508 tange     20   0 4040616  76224   3436 S   7.2   0.2 238:50.24 lbrynet            
 416426 root      20   0 1101072  99296  82680 S   7.2   0.3 108:39.06 Xorg               

当 RAM 可用率达到 50% 时,是什么导致kswapd系统变得疯狂?我怎样才能改变这个?

早期的行为会导致kswapd在大约 1-2 GB 可用时处于活动状态,因此我想回到这一点。

作为一个(糟糕的)解决方法,我启用了 zswap。它有一点帮助:系统仍在交换,但现在它交换到 RAM。

我已经从 60 岁变成了/proc/sys/vm/swappiness20 岁。我仍然看到这种情况发生。

$ uname -a
Linux aspire 5.4.0-88-generic #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/issue.net
Ubuntu 20.04.3 LTS
$ mount |grep tmpfs|field 3|parallel -Xj1 df
Filesystem     1K-blocks   Used Available Use% Mounted on
udev            16303656      0  16303656   0% /dev
tmpfs            3270404   2464   3267940   1% /run
tmpfs           16352020 534520  15817500   4% /dev/shm
tmpfs               5120      4      5116   1% /run/lock
tmpfs           16352020      0  16352020   0% /sys/fs/cgroup
tmpfs            1000000      0   1000000   0% /Mnt/ram
tmpfs            3270404   2464   3267940   1% /run/snapd/ns
tmpfs            3270404    284   3270120   1% /run/user/1000
none             3270404      0   3270404   0% /tmp/shm/parallel
$ cat /proc/sys/vm/vfs_cache_pressure
100

相关内容