Linux使用free命令buff/cache过高

原创 2018年04月15日 15:46:20

在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:
这里写图片描述

其实:buffers/cache占用的较多,说明系统中有进程曾经读写过文件,但是不要紧,这部分内存是当空闲来用的

Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对buffer/cache的释放。尤其是被使用更多的cache空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放cache,作为free空间分给相关进程使用。所以一般情况下,我们认为buffer/cache空间可以被释放,这个理解是正确的。
但是这种清缓存的工作也并不是没有成本。理解cache是干什么的就可以明白清缓存必须保证cache中的数据跟对应文件中的数据一致,才能对cache进行释放。所以伴随着cache清除的行为的,一般都是系统IO飙高。因为内核要对比cache中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收。
在系统中除了内存将被耗尽的时候可以清缓存以外,我们还可以使用下面这个文件来人工触发缓存清除的操作:

echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的缓存对象。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014520745/article/details/79949874

LAMP部署-CentOS、Apache、MySQL、PHP配置优化

适用人群 PHP程序员,基于PHP的开源产品维护人员,网站管理等 课程简介 CentOS,Apache,Mysql,PHP安装过程中遇到的问题,会在本套课程中详细介绍。
  • 2017年06月06日 14:48

linux的buff/cache过大

top查看内存使用情况,发现buff/cache过大,执行下面的命令清除cache echo 3 > /proc/sys/vm/drop_caches...
  • q260996583
  • q260996583
  • 2017-12-28 15:04:22
  • 641

解决linux buffer/cache 消耗内存过高引发的问题

工作中接到DBA报障某台服务器 跑一些大的数据,服务器就无法远程连接,报错,抓过日志叫DELL工程师检测也没问题,系统也重装过, 现在些一些较大的数据就会报如 图错误,由于服务器远在异地城市IDC机...
  • kevins_lee
  • kevins_lee
  • 2015-10-15 14:46:49
  • 13410

Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案

问题描述Linux内存使用量超过阈值,使得Java应用程序无可用内存,最终导致程序崩溃。即使在程序没有挂掉时把程序停掉,系统内存也不会被释放。找原因的过程这个问题已经困扰我好几个月了,分析过好多次都没...
  • u014740338
  • u014740338
  • 2017-03-27 20:48:43
  • 6949

Cache占用过多内存导致Linux系统内存不足问题排查

问题描述 Linux服务器内存使用量超过阈值,触发报警。 问题排查 首先,通过free命令观察系统的内存使用情况,显示如下: total       used       free...
  • zhongbeida_xue
  • zhongbeida_xue
  • 2017-12-18 10:29:02
  • 601

buff/cache 内容释放

oscache远程服务器特别卡,top命令查看获得 buff/cache 占据内存特别大,使用以下命令清理缓存: swap清理: swapoff -a && swapon -a 注意:这样清理有个前...
  • lipingping951462
  • lipingping951462
  • 2016-02-03 10:28:05
  • 8387

Linux使用free命令buff/cache过高

在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 其实:buffers/cache占用的较多,说明系统中有...
  • u014520745
  • u014520745
  • 2018-04-15 15:46:20
  • 32

从ARM VIVT看linux的cache处理

http://blog.chinaunix.net/space.php?uid=10701701&do=blog&cuid=1200081 do_wp_page 的VIVT 考虑 在下...
  • BoArmy
  • BoArmy
  • 2013-03-09 07:27:46
  • 727

linux系统之arm架构的CPU与Cache

【摘要】【写作原因】【问题构造】【分析一】总体流程【分析二】get_free_pages与mmap【分析三】CPU与TLB【分析四】cpu与L1cache【分析五】cpu与L2cache【总结】注意:...
  • eleven_xiy
  • eleven_xiy
  • 2017-04-22 08:06:21
  • 1389

ARM平台linux驱动中怎样刷cache

怎样刷cache 在涉及到DMA的驱动中当你对DMA的buffer进行了修改后,通常需要刷cache(当然有不需要刷cache的情况,不过我不分析它)。怎样刷cache —— 调用dma_sync_...
  • power1952
  • power1952
  • 2013-08-21 22:31:25
  • 2195
收藏助手
不良信息举报
您举报文章:Linux使用free命令buff/cache过高
举报原因:
原因补充:

(最多只允许输入30个字)