`

linux内存cached释放

阅读更多
我们用free命令查看系统内存使用情况的时候会发现:
#free -m
             total       used       free     shared    buffers     cached
Mem:         24359      11240      13119          0          0      10706
-/+ buffers/cache:        533      23826
Swap:         4095          0       4095
 
1、total = used + free
2、cached比较大,甚至我遇见过内存剩余只有7M的情况,这个时候cached非常大,基本上接近等于total了,这个时候打开文件或者传输文件的时候可用内存很小,程序可能就会用到交换分区swap了,所以会发现机器速度变慢的情况
 
如何解决这个导致机器变慢的问题呢?
罪魁祸首就是内存都被cached了,free的基本没有了
所以我们应该想想如何把cached内存释放出来
重启机器肯定是可以解决,但是我们肯定是不能用这样的办法
 
释放方法有三种(系统默认值是0,释放之后你可以再改回0值):
To free pagecache:  echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:  echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches
 
经常使用rsync传输大量数据的朋友可能遇到过类似的情况:开始是传输大量文件过去,到后来传输的数据并不大,但就是很慢很慢,到对边的服务器上看会发现在终端输入命令都不会觉得慢,但看内存使用情况时,发现free的内存很少,几乎接近零了,我觉得可能就是内存都被cached了导致的
 
为什么我们要释放掉cached内存?因为我们用rsync传输大量数据的时候,linux系统将一部分文件的信息缓存在内存中,这样是可以减少频繁使用的文件的磁盘IO时间占用,当我们传完一批文件后,我们要传输另外一批文件过去,是完全不同的文件或者文件的内容发生了变化,内存中缓存的文件也不是我们需要的了,我们需要清空缓存,腾出内存用来传输下一批文件使用,这个时候我们急切的需要看到更多的内存是free状态的。
 
在这样的前提下,我们有必要自己手动清空缓存,腾出更多可用内存来
 
注意:在清空缓存前我们需要在linux系统中执行一下sync命令,将缓存中的未被写入磁盘的内容写到磁盘上



 0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存 
分享到:
评论

相关推荐

    手动释放Linux服务器内存(具体操作步骤)

    Linux服务器在发现内存不足时,会自动清理cached区域,释放内存,然后继续增大cache,free继续减少。其实手动降低内存使用率的方法也就是图一时之快而已

    Linux系统查看内存使用率

    Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如:  Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers  Swap: 4192956k total,...

    cached-0.1.0.jar

    jar包,亲测可用

    CacheD_l2_

    Ida database for cached server.

    Python库 | cached-1.0.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:cached-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Linux之分配 swap 分区详解

    cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程 buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定...

    Fast Priority Queues for Cached Memory.

    Fast Priority Queues for Cached Memory.

    Linux上的free命令详解

    解释一下Linux上free命令的输出。  下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1 2 ...

    windows版php apc cached扩展dll

    apc cached for php 5.3.28

    cached-property, 在类中,用于缓存属性的修饰器.zip

    cached-property, 在类中,用于缓存属性的修饰器 缓存属性 用于在类中缓存属性的修饰器。为什么?使时间或者计算的昂贵属性快速而简便地缓存。因为我厌倦了把这个代码从非网络项目复制到非web项目。我需要在 python ...

    flutter_cached_pdfview:Flutter的增强PDF视图

    flutter_cached_pdfview 用于显示iOS和Android的本机PDF视图的软件包,支持从其他资源(例如Path,Asset或Url)打开并对其进行缓存。 支持= [ ]; 从路径打开Pdf(本地文件) 从资产打开PDF 从URl中打开Pdf并将...

    Linux服务器巡检报告(2).doc

    0.0% hi 0.0% si 第五行以后物理使用的物理空闲内存总量 377544k buffers Swap: 18481144k total 320k used 18480824k free 7835708k cached 用作交换区总量 使用的交换区总量 空闲交换区总量 缓冲的交换区总量。...

    简单了解Linux性能监控命令free

    linux提供了很多命令来协助我们快速定位到错误,free命令是Linux最常用的命令之一:它可以查看系统的内存状况,包括服务器的总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况。...

    sql学习 session_cached_cursors.sql

    sql学习 session_cached_cursors.sql

    MySQL_python-1.2.5-py2.7-linux-x86_64.egg

    下载编译安装MySQL-python-1.2.5.zip需要各种依赖,安装完成后,取出egg文件可离线安装,已编译MySQL-python模块,可离线配置

    Laravel开发-cached-embed

    Laravel开发-cached-embed Laravel 5.5包缓存来自https://github.com/oscarotero/embed的嵌入信息

    Python 3.8中实现functools.cached_property功能

    缓存属性( cached_property )是一个非常常用的功能,很多知名Python项目都自己实现过它。我举几个例子: bottle.cached_property Bottle是我最早接触的Web框架,也是我第一次阅读的开源项目源码。最早知道 cached_...

    C++ ACE开发中的的内存管理

    ACE_Allocator,ACE中的分配器类的接口类;...ACE_Cached_Allocator,预先分配内存池,其中含有特定数目和大小的内存chunk;ACE_New_Allocator,为C++ new和delete操作符提供包装的分配器,内部使用new和delete操作符

    s3-cached:S3文件访问抽象,提供内存和磁盘缓存层

    S3文件访问抽象,提供内存和磁盘缓存层。 如果要减少用于服务(半)静态文件的s3访问量,则在例如lambda函数中很有用。 它能做什么 访问抽象以访问AWS S3上的JSON和GZipped数据 两层缓存(内存和磁盘) 允许您定义...

    cached-execute:重做,锁定和加载

    yarn add cached-execute # npm install cached-execute 例子 const Promise = require ( 'bluebird' ) const { CachedExecute , CachePolicy } = require ( './src' ) const cache = new CachedExecute ( { host ...

Global site tag (gtag.js) - Google Analytics