当系统滞后且负载较重时,我的 RAM 使用率从未超过 75%

当系统滞后且负载较重时,我的 RAM 使用率从未超过 75%
Linux matrix 5.15.2-xanmod1-1 #1 SMP Wed, 17 Nov 2021 02:36:25 +0000 x86_64 GNU/Linux
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1 btrfs        swap  477dd81e-6a88-4987-b830-47bea1ec1f5d       0    87% /swap
└─sda2 btrfs        root  2067df62-8ff6-4b52-9814-e4d5d8cf1577   55.3G    48% /
zram0                                                                         [SWAP]
               total        used        free      shared  buff/cache   available
Mem:           1.8Gi       1.2Gi       111Mi        56Mi       557Mi       446Mi
Swap:          5.5Gi       1.6Gi       3.9Gi

vm.swappiness = 10

所以我的问题是,当我的系统处于负载状态时,即如果我在 Firefox 中打开了太多选项卡,或者同时运行 vscode 和 Firefox,我的系统就会变得非常滞后。

然而,当我检查 RAM 使用情况时,它一直停留在 75%,并且永远不会超过这个值。因此还有 25% 的未使用 RAM。

在交换之前如何让它使用更多的内存。

答案1

首先,您假设缓慢是由于 full 造成的RAM,但这不一定是根本原因。理论上应该还有其他原因和瓶颈会导致速度缓慢,例如大量的I/O、期望CPU太多processes等,在确定罪魁祸首是内存之前,您应该首先排除其他原因。您可以使用vmstat命令,例如:

$ vmstat -w 1 
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 0  0            0    120951240         9412      8313416    0    0     0     2    0    0   0   0 100   0   0
 0  0            0    120951248         9412      8313416    0    0     0     0  143  210   0   0 100   0   0
 0  0            0    120950980         9412      8313416    0    0     0    20  116  238   0   0 100   0   0
 0  0            0    120950980         9412      8313416    0    0     0     0  180  315   0   0 100   0   0
 0  0            0    120951232         9412      8313416    0    0     0     0  145  285   0   0 100   0   0

如果您在( ) 或( )swap部分下看到相对较高的数字,则可能表明系统正在将内存页面交换到.如果那里的值很低,则可能还有另一个导致速度缓慢的原因(您可能会在、或下看到)。siswap insoswap outRAMswapprocsiocpu

假设您确实看到swap in/out中的值较高vmstat,则表明瓶颈确实是RAM被填满。

swappiness这是来自的描述Linux 内核文档

交换性

该控制用于定义内核交换内存页面的积极程度。较高的值会增加攻击性,较低的值会减少交换量。值 0 指示内核不要启动交换,直到空闲页面和文件支持页面的数量小于区域中的高水位线。

默认值为 60。

首先,请注意您的swappiness值 ( 10) 明显低于默认值 ( 60)。

假设您firefox有很多选项卡;其中大多数都处于闲置状态,并且使用率不高。如果swappiness较低,机器将尝试将数据尽可能保留在 RAM 中,并避免交换出去,直到它真的必须为新页面释放一些内存;这意味着机器只会在需要的时候开始交换,然后可能有点太晚了,在那一刻你会看到一些滞后等待旧的内存页面被换出。

如果swappiness较高,系统将更频繁地提前换出旧的和空闲的内存页面,为新页面留下更多的可用内存。当您再次访问这些选项卡时,它将在内存中从磁盘分页到 RAM,因此速度可能会更慢,但由于您不经常使用这些选项卡,因此最好将它们保留在交换中,并为新进程保留更多可用内存页面。

我建议增加您的swappiness,以便更频繁地换出旧的和未使用的内存页面,而不仅仅是在内存达到其限制时。

相关内容