gpt4 book ai didi

linux - 什么是linux中的内存回收

转载 作者:太空狗 更新时间:2023-10-29 11:41:50 28 4
gpt4 key购买 nike

我对 Linux 内存管理还很陌生。在阅读有关该主题的一些文档时,我有一些基本问题。

下面是我的配置:

vm.swappiness=10
vm.vfs_cache_pressure=140
vm.min_free_kbytes=2013265

我的理解是,如果可用内存低于 vm.min_free_kbytes,那么操作系统将回收内存。

  1. Memory reclaim 是删除不需要的文件还是从 RAM 复制到 Swap 内存?

  2. 如果它是从 RAM 复制到 Swap 内存,那么如果我不使用 Swap 内存,会​​发生什么?

  3. swappiness 是否总是大于 vm.min_free_kbytes

  4. vm.vfs_cache_pressure有什么意义?

最佳答案

  1. 内存回收是创建更多可用 RAM 页面的机制,方法是将驻留在其中的数据扔到其他地方。它与文件无关。当需要更多 RAM 时,数据将从 RAM 中删除(如果可以重新获取,则将其丢弃)或复制到交换文件(因此数据可重新获取)。

  2. 如果没有交换文件,但某些数据应该保存到(不存在的)交换区域,则会发生内存不足错误。通常,这会通知试图获取内存的进程(通过 alloc() 和类似方法)- alloc() 失败并返回 NULL。进程可以选择做什么,甚至崩溃。如果内核本身需要内存(通常很少见),则会发生 PANIC 并且系统会完全锁定。

  3. swappiness 是以百分比表示的内核使用交换区的趋势,即使不是严格需要,以便有足够的 ram 准备好内存请求。简而言之,100% swappiness 意味着内核尝试始终交换,swappiness 为 0 意味着内核尝试不进行交换(但是有一些特殊值)。 min_free_kbytes 表示真正的千字节,它不是百分比,它是为了让内核正常工作而应该始终空闲的最小数量。即使开始内存回收也可能需要更多的 ram 来完成这项工作:如果为了获得一些内存,您只需要一点内存但您没有它,那将是灾难性的! :-)

  4. vfs_cache_pressure 也是一个百分比。它表示内核试图摆脱用于文件系统(vfs=虚拟文件系统)的(内存)缓存的程度。文件系统的缓存非常适合丢弃,因为它使信息易于从磁盘读取。不幸的是,如果计算机需要频繁使用文件系统,它就必须读取、读取、读取始终相同的数据。缓存是一个很大的性能提升。当然,如果系统的磁盘 I/O 很少,那么这个缓存是内存不足时丢弃的最佳选择。

所有这些都在这里进行了简洁的解释:https://www.kernel.org/doc/Documentation/sysctl/vm.txt

关于linux - 什么是linux中的内存回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com