1。通过free命令查看Linux内存总量:内存总量。使用:使用的内存大小(包括缓存、缓冲区和共享)。free:空闲内存大小。shared:进程间的共享内存(一般不用,可以忽略)。Buffers:把写在内存中的东西缓存起来,这样可以快速响应请求,并定期将后续数据刷到磁盘。cached:读入内存后缓存内容的大小(这部分是为了下次查询时快速返回)。-/+buffers/cache可以看成两部分:-buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached没有被使用,组织和人们需要它们被释放),其他值=已使用缓冲区缓存。+buffers/cache:可用内存大小(同样不是free代表的部分),它的值=free+buffers+cached。Swap:硬盘上交换分区的使用大小。设计的目的是当上面提到的+buffers/cache所代表的可用内存已经用完后,在有新的读写请求到来后,会将内存中的一部分数据写入磁盘,从而使用一部分的磁盘空间作为虚拟内存使用。2、Buffer和Cache引入Cache(缓存),旨在增加CPU与内存之间的数据交换,Buffer(缓冲区)则是为了提高内存与硬盘(或其他I/O设备)之间的数据交换。Cache主要是为读操作而设计的,但是Cache的概念可能比较混乱。我理解CPU本身有Cache,包括一级缓存,二级缓存,三级缓存。我们知道CPU的所有指令操作都与内存相连,而且CPU的处理能力远高于内存的速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache不是很大。主要用来存放一些常用的指令和常用的数据。Cache数据其实大部分应该是占用内存空间来缓存请求的数据,也就是上面的Cached部分(这部分纯属个人理解,是否正确还有待验证。)。Buffer主要是为写操作而设计的,更具体地说,它是为内存和硬盘之间的写操作而设计的。目的是集中写操作,减少磁盘碎片和硬盘重复寻址,提高性能。Linux系统内部有一个守护进程,定时清除Buffer中的内容并写入硬盘。手动执行sync命令时也会触发上述操作。三、常见症状症状一:在Linux中频繁访问文件时,物理内存很快用完,缓存不断增长。说明:Linux会在缓存中缓存每一个请求的数据。优点是CPU的处理速度远高于内存,所以当CPU与内存通信时,可以快速从缓存中返回命中结果。症状二:Swap被占用。解释:内存可能不够占用Swap,可以将Swap作为服务器监控的指标,引起注意。4、手动清理Swap和buffers/cache(一)清理Swapswapoff-a&&swapon-a操作说明:如果Swap已经被使用,清理后+buffers/cache中还有空间,执行swapoff-a操作时,会触发Swap中的内容交换到内存中,数据不会丢失。(2)清理buffers/cache:sync;sync;sync;&&echo3>/proc/sys/vm/drop_cachessleep2echo0>/proc/sys/vm/drop_caches操作说明:sync-->将缓存的内容写回harddisk;echo3>/proc/sys/vm/drop_caches-->修改drop_caches的值为3,默认为0,修改为3系统会清除缓存中的内容;sleep2-->稍等片刻,防止上一步被执行;echo0>/proc/sys/vm/drop_caches-->改回默认值5.总结通过上面的分析我们可以知道,当空闲物理内存不多的时候,并不一定代表系统正在运行不好说,因为内存的cache和buffer部分可以随时被重用,从某种意义上说,这两部分内存也可以看作是额外的空闲内存。如果频繁调用swap,bi和bo长期不为0,这是内存资源是否吃紧的依据。通过free看资源的时候,实际主要关注的是-/+buffers/cache的值,知道内存是否够用。
