内存的各指标计算方法(参考free和vmstat)

free的打印信息:

             total       used       free     shared    buffers     cached
Mem:      65970364   64966504    1003860      19296     766752   58405412
-/+ buffers/cache:    5794340   60176024
Swap:     33554428      15892   33538536

基本上需要获取内存信息都在/proc/meminfo文件,这里主要对该文件中的内容做一些简单说明,其中有一些参考

http://linuxperf.com/网址。

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

MemFree:系统尚未使用的内存,[MemTotal-MemFree]就是已被用掉的内存,但该字段并不代表可用内存,可用内存应使用MemAvailable字段

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

Buffers:块设备(block device)所占用的缓存页,包括:直接读写块设备、以及文件系统元数据(metadata)比如SuperBlock所使用的缓存页。它与“Cached”的区别在于,“Cached”表示普通文件所占用的缓存页。

Cached:从磁盘读取文件的页缓存(实际上好像也包含写操作的缓存)

SwapFree:交换区的空闲大小

SwapTotal:交换区的总大小

上面的free打印是老版本的free打印,新的添加了available,在文件/proc/meminfo中,并不一定有MemAvailable域,这个有时候需要单独计算。在老版本的free打印中,包含了”-/+ buffers/cache:    5794340   60176024“,第一个是通过公式used-buffers-cached计算出来的,表示实际使用的内存量,第二个值通过公式free+buffers+cached计算出来的,表示实际空闲的内存量。

个人感觉free+buffers+cached就是available,但实际上在新的free程序中关于availbale的算法要复杂许多,因为free+buffers+cached跟available好像差不多,所以我都是直接使用的free+buffers+cached表示实际可用内存,按照老版本的free程序,好像这样没什么问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值