linux内存cached释放

我们用free命令查看系统内存使用情况的时候会发现:

#free -m

             total       used       free     shared    buffers     cachedMem:         24359      11240      13119          0          0      10706-/+ buffers/cache:        533      23826Swap:         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命令,将缓存中的未被写入磁盘的内容写到磁盘上

你可能感兴趣的:(linux内存cached释放)