当我配置vm.watermark_scale_factor
负责/etc/sysctl.conf
向内核指示守护进程何时kswapd
开始激活从 RAM 到磁盘的分页的属性时,发生了一些我找不到解释的事情:它增加了 RAM 内存的消耗。
如果我保留其默认值10,也就是说,kswapd
当它有0.1%可用内存,conky 告诉我计算机启动时使用1.2GB内存消耗;但如果,例如,我将其设置为1000,这是它的最大值,消耗开始于2.9和3GB根本不需要打开任何东西。
我已经在我使用的 Liquorix 内核和 Debian 内核中尝试过这一点,结果相同。另外,当我使用 Linuxmint 时,我记得当该属性的价值增加时,消耗也会增加200。
我将此属性设置为270,因为我注意到,当它设置为该值时,当交换开始时,PC 不会出现速度缓慢的情况。如果我默认将其保留在10,交换导致小幅瘫痪10到15秒。
回顾一下,如果我默认将此属性保留在10它消耗1.2GB。如果我将其设置为270它消耗1.7GB如果我将其设置为1000它消耗2.9-3.0GB无需打开任何应用程序。我检查了系统监视器,没有内存消耗高的进程
首先想到的是,这是内核中的一个普遍错误。
如果这个属性只是为了激活交换守护进程,为什么消耗会增加kswapd
?
和vm.watermark_scale_factor=270:
$ free -h
total used free shared buff/cache available
Mem: 5,7Gi 933Mi 3,8Gi 21Mi 1,0Gi 4,1Gi
Swap: 4,8Gi 0B 4,8Gi
和vm.watermark_scale_factor=1000:
$ free -h
total used free shared buff/cache available
Mem: 5,7Gi 1,1Gi 3,6Gi 39Mi 1,0Gi 2,9Gi
Swap: 4,8Gi 0B 4,8Gi
图像为vm.watermark_scale_factor=1000:
同样显示系统监视器。所有这些消耗都没有打开任何东西。
答案1
Linux 内核中的属性vm.watermark_scale_factor
控制内核如何管理系统中的可用 RAM。在内核开始释放系统中的不活动内存或文件缓存之前,增加此属性的值会设置更高的内存使用阈值。这个更高的阈值意味着内核在释放之前会在缓存中保留更多内存。
因此,如果增加该vm.watermark_scale_factor
属性的值,您可能会注意到系统中 RAM 消耗的增加,因为内核将在缓存中保留更多内存。这在可用 RAM 有限的系统中尤其明显,RAM 消耗的增加可能会使系统感觉更慢,甚至导致内存短缺(在极端情况下)。
然而,值得注意的是,RAM 消耗的增加也会导致系统性能的提高,因为内核可以更快地访问缓存的数据,因此应用程序可以更快地运行。总体而言,vm.watermark_scale_factor
应根据系统的需求和资源仔细调整属性的配置,以确保性能和内存可用性之间的适当平衡。