linux free -h
total:
#服务器内存总大小:7.6G
used:
#已经使用了多少内存:3.8G,已用内存总量(used = total-free-buffers-cache,这里没减去shared,我理解是shared是used的其中一部分)
free:
#未被任何应用使用的真实空闲内存,也叫未被分配出去的内存,(真正尚未被使用的物理内存数)
shared:#表示多个进程共享的内存总额。
buff/cache:
#表示buffers和cache所用总量的总和(buffers为内核缓冲区所用的内存,cache为页缓存和slabs所用的内存容量),也有人说是表示磁盘缓存的大小。
available:
真正剩余的可被程序应用的内存数;是系统的一个估计值,不是谁减比较准确
补充:
page cache,即缓存文件内容+slab。slab也分可回收和不可回收部分,可手动回收,但是会在回收缓存这段时间影响主机性能,并且不是有所的slab和page cache都能被回收,正在使用的这些缓存不能被回收,否则系统的性能会很低,
所以最后可能的内存是多少,就得评估能够回收的有多少,就有了下面这个参数available
buffers是用来缓冲文件属性和目录内容的(其实就是inode信息)
cached是用来缓冲文件内容的(其实就是data block数据)
为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。
前者针对磁盘块的读写,后者针对文件inode的读写。
这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。