繁体   English   中英

什么是Linux内存回收

[英]What is memory reclaim in linux

在阅读一些内存管理相关文档时,我对 Linux 内存管理概念非常陌生,我有一些基本的疑问,请澄清一下。

考虑以下是我的配置

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

我的理解是如果空闲内存少于 vm.min_free_kbytes 操作系统将回收内存。

1- 内存回收是删除不需要的文件还是从 RAM 复制到交换内存?

2- 如果它从 RAM 复制到交换内存,那么如果我不使用交换内存会发生什么?

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 表示实际千字节,它不是百分比,它是为了让内核正常工作而应始终空闲的最小量。 即使开始内存回收也可能需要更多的内存来完成这项工作:如果要获得一些内存,您只需要一点内存但没有它,那将是灾难性的! :-)

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

所有这些都在这里简要解释: https ://www.kernel.org/doc/Documentation/sysctl/vm.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM