linux 内存 cached,free命令-linux内存cached释放

在工做中常常会遇到Linux内存很大,却被cached占了大部分的内存空间,致使linux开始启用swap的状况。node

下图就是这样状况:缓存

总内存有128G,cached占用了108G,形成系统不得不使用swap内存,而致使性能降低,速度变慢

服务器

96ff16d1f7d913b5d8b6b392e7f50121.png

buffer,cached的做用:app

cached主要负责缓存文件使用, 日志文件过大形成cached区内存增大把内存占用完 .

Free中的buffer和cache:(它们都是占用内存):

buffer : 做为buffer cache的内存,是块设备(磁盘)的缓冲区,包括读、写磁盘

cache: 做为page cache的内存, 文件系统的cache,包括读、写文件

若是 cache 的值很大,说明cache住的文件数不少。

ide

为了提升磁盘存取效率, Linux作了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采起了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(好比read,write,getdents)的时间。性能

如何解决这个致使机器变慢的问题呢?

罪魁祸首就是内存都被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_cachesspa

经常使用方法是:echo 1 > /proc/sys/vm/drop_caches设计

执行上面的命令,能够释放了大概40G的cached空间日志

ccb01885d17d970e042394828d8d0e15.png

常常使用rsync传输大量数据的朋友可能遇到过相似的状况:开始是传输大量文件过去,到后来传输的数据并不大,但就是很慢很慢,到对边的服务器上看会发如今终端输入命令都不会以为慢,但看内存使用状况时,发现free的内存不多,几乎接近零了,我以为可能就是内存都被cached了致使的

为何咱们要释放掉cached内存?由于咱们用rsync传输大量数据的时候,linux系统将一部分文件的信息缓存在内存中,这样是能够减小频繁使用的文件的磁盘IO时间占用,当咱们传完一批文件后,咱们要传输另一批文件过去,是彻底不一样的文件或者文件的内容发生了变化,内存中缓存的文件也不是咱们须要的了,咱们须要清空缓存,腾出内存用来传输下一批文件使用,这个时候咱们急切的须要看到更多的内存是free状态的。

在这样的前提下,咱们有必要本身手动清空缓存,腾出更多可用内存来

注意:在清空缓存前咱们须要在linux系统中执行一下sync命令,将缓存中的未被写入磁盘的内容写到磁盘上除了释放掉cached内存之外,还须要设置vm.swappiness的值,以尽大限度的使用物理内存

查看vm.swappiness参数的值:

#sysctl -q vm.swappiness

临时设置vm.swappiness的值(重启后生效)

#sysctl vm.swappiness=10

永久设置vm.swappiness:

echo "vm.swappiness = 10" >> /etc/sysctl.conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值