首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中什么是内存回收?

在linux中什么是内存回收?
EN

Stack Overflow用户
提问于 2017-02-21 04:33:41
回答 1查看 11.2K关注 0票数 6

我对Linux内存管理非常陌生。在阅读一些有关这一主题的文件时,我提出了一些基本问题。

下面是我的配置:

代码语言:javascript
复制
vm.swappiness=10
vm.vfs_cache_pressure=140
vm.min_free_kbytes=2013265 

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

  1. 内存是恢复删除不需要的文件,还是复制到RAM中交换内存?
  2. 如果它从RAM复制到交换内存,那么如果我不使用交换内存,会发生什么?
  3. 总是比vm.min_free_kbytes大吗?
  4. vm.vfs_cache_pressure的意义是什么
EN

回答 1

Stack Overflow用户

发布于 2017-02-21 10:03:16

  1. 内存回收是一种创建更多空闲RAM页面的机制,方法是将驻留在其中的数据抛到其他地方。这与文件无关。当需要更多的RAM时,数据将从RAM中删除(如果可以重取,则丢弃)或复制到交换文件中(因此数据将被重取)。
  2. 如果没有交换文件,但是应该将一些数据保存到(不存在)交换区域,则会发生内存不足错误。通常,这是通知试图获得内存的进程(通过alloc()和类似的)- alloc()失败并返回NULL。这个过程可以选择做什么,甚至崩溃。如果内核本身需要内存(通常非常罕见),则会发生恐慌,系统会完全锁定。
  3. 交换是内核使用交换的趋势,即使不是严格需要,也是为了准备足够的内存请求。简单地说,100%的交换意味着内核总是尝试交换,而0的交换意味着内核试图不进行交换(但是有一些特殊的值)。min_free_kbytes表示真正的千字节,它不是一个百分比,它是应该始终免费的最小值,以使内核正常工作。即使启动内存回收也需要更多的内存来完成这项工作:如果为了获得一些内存,您只需要一点点内存,但您没有内存,那将是灾难性的!:-)
  4. vfs_cache_pressure又是一个百分比。它表明内核试图摆脱用于文件系统(vfs=virtual文件系统)的(内存)缓存的次数。文件系统的缓存是一个很好的选择,因为它可以很容易地从磁盘读取信息。不幸的是,如果计算机需要频繁地使用文件系统,它就必须读取,再读,再读,总是相同的数据。缓存是一个很大的性能提升。当然,如果系统执行很少的磁盘I/O,那么这个缓存是在内存不足时丢弃的最佳选择。

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42358745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档