#free信息是通过解析文件 /proc/meminfo 而收集到的

[root@SqlRun alertscripts]# cat /proc/meminfo  && free -t
MemTotal:        8012168 kB	#所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)
MemFree:          231468 kB	#表示系统尚未使用的内存。(MemTotal-MemFree)就是已被用掉的内存
MemAvailable:    3673768 kB	#3.14内核增加的功能,Memavailable包括了MemFree和reclaimeable memory
Buffers:          282964 kB	#用来给文件做缓冲大小
Cached:          3071308 kB	#被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache )
SwapCached:            0 kB	#被高速缓冲存储器(cache memory)用的交换空间的大小已经 被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active:          4963124 kB	#在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用
Inactive:        2274352 kB	#在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径
Active(anon):    2815844 kB
Inactive(anon):  1118220 kB
Active(file):    2147280 kB
Inactive(file):  1156132 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       8388604 kB	#交换空间的总大小
SwapFree:        8388604 kB	#未被使用交换空间的大小
Dirty:               104 kB	#等待被写回到磁盘的内存大小
Writeback:             0 kB	#正在被写回到磁盘的内存大小
AnonPages:       3883260 kB	#未映射页的内存大小
Mapped:            75152 kB	#设备和文件等映射的大小
Shmem:             50860 kB
Slab:             419856 kB	#
SReclaimable:     392292 kB #可收回Slab的大小
SUnreclaim:        27564 kB #不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
KernelStack:        5080 kB #
PageTables:        35020 kB #管理内存分页页面的索引表的大小
NFS_Unstable:          0 kB #不稳定页表的大小
Bounce:                0 kB #
WritebackTmp:          0 kB #
CommitLimit:    12394688 kB #
Committed_AS:    6406380 kB #
VmallocTotal:   34359738367 kB	#可以vmalloc虚拟内存大小
VmallocUsed:       24440 kB		#已经被使用的虚拟内存大小
VmallocChunk:   34359711995 kB
HardwareCorrupted:     0 kB
AnonHugePages:   3024896 kB
HugePages_Total:       0	#大页面数目
HugePages_Free:        0	#空闲大页面数目
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB	#大页面一页大小
DirectMap4k:       77696 kB
DirectMap2M:     4116480 kB
DirectMap1G:     6291456 kB
             total       used       free     shared    buffers     cached
Mem:       8012168    7780888     231280      50860     282964    3020448
-/+ buffers/cache:    4477476    3534692
Swap:      8388604          0    8388604
Total:    16400772    7780888    8619884

MemTotal

系统从加电开始到引导完成,firmware/BIOS要保留一些内存,kernel本身要占用一些内存,最后剩下可供kernel支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的。

MemAvailable

有些应用程序会根据系统的可用内存大小自动调整内存申请的多少,所以需要一个记录当前可用内存数量的统计值,MemFree并不适用,因为MemFree不能代表全部可用的内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存,即MemAvailable。/proc/meminfo中的MemAvailable是内核使用特定的算法估算出来的,要注意这是一个估计值,并不精确。

第一行:
全部:全部已安装内存(/proc/meminfo 中的 MemTotal 项)
已用:已用内存(全部计算 - 空闲+缓冲+缓存)
空闲:未使用内存(/proc/meminfo 中的 MemFree 项)
共用:主要被 tmpfs 使用的内存(/proc/meminfo 中的 Shmem 项)主要被 tmpfs(/proc/meminfo 中的 Shmem 项)使用
缓冲:被内核缓冲使用的内存(/proc/meminfo 中的 Buffers 项)
缓存:被页面缓存和 slab 使用的内存(/proc/meminfo 中的 Cached 和 SReclaimable 项)

	total=MemTotal
					used=MemTotal-MemFree+Buffers+Shmem
					free=MemFree
	shared=Shmem
	buffers=Buffers
	cached=Cached+SSReclaimable   

第二行:表明已用和空闲的缓冲/缓存

	used=
	free=
	used+free=MemTotal

第三行:表明总交换内存(/proc/meminfo 中的 SwapTotal 项)、空闲内存(/proc/meminfo 中的 SwapFree 项)和已用交换内存。

free -m/g/h #单位输出
free -t
free -s 1 #1秒输出一次
free -c 5 #输出5次后退出

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code