Linux下内存的使用率正确的算法

106 篇文章 8 订阅

Linux下各种内存的使用率的算法

版本一:

先引用百度知道的提问:

linux 系统查看物理内存使用率的命令,以百分比形式输出?


回答的答案是:

  1. free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'   
 free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}' 

  1. used mem is 2796M,total mem is 3829M,used percent is 73.0217%  
used mem is 2796M,total mem is 3829M,used percent is 73.0217%


以下图截图为准:



这种算法其实就是直接用Mem中的used除以total得到的百分比:

(2810 / 3829) *100= 73.4% 



-----------------------------------------------------------华丽的分割-----------------------------------------------------------------------------------------------------

版本二:

ITPUB中的博客: linux系统查看内存使用率




这里有个51.1%,楼主算了半天没有明白这个是怎么得到的:

用 2029 / 3990 = 50.85%

     3906 / 3990 = 97.89%


回头去看的时候发现他先不换算成M,直接用k做单位,即free(没有 -m)



51.1% = (2090108 / (1996388 + 2090108) ) * 100%


公式为:可用内存=free + buffer + cache

                已用内存=used - buffer - cache


-----------------------------------------------------------华丽的分割-----------------------------------------------------------------------------------------------------

版本三:





===================================华丽的分隔符===========================================================


1,通过以上的整合,我们有几个公式如下:(换算成M的时候有四舍五入,所以以下的计算存在1以内的误差)

①系统可用内存:MemFree = MemTotal - MemUsed

                            1018    =  3829  -  2810

②系统已用内存:MemUsed = MemTotal - MemFree

                            2810 = 3829    -  1018


①物理可用内存:-/+Free = MemFree + MemBuffers + MemCache

                                  2068   =  1018  +  171  +  879

②物理已用内存:-/+Used = MemTotal - MemFree - MemBuffers - MemCache

                                   1760  =  3829  -  1018  -   171    -  879


2,有几种算法如下:

①计算系统已用内存的百分比:

  1. free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'   
free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}' 

或者
  1. (MemUsed / MemTotal)/MemTotal * 100%  
(MemUsed / MemTotal)/MemTotal * 100%

②计算物理内存的使用

  1. (-/+Used / MemTotal) * 100%  
(-/+Used / MemTotal) * 100%



3,总结如下:

多数的linux系统在free命令后会发现free(剩余)的内存很少,而自己又没有开过多的程序或服务。

对于上述的情况,正确的解释是:

linux的内存管理机制与windows的有所不同。具体的机制我们无需知道,我们需要知道的是,linux的内存管理机制的思想包括(不敢说就是)内存利用率最大化。内核会把剩余的内存申请为cached,而cached不属于free范畴。当系统运行时间较久,会发现cached很大,对于有频繁文件读写操作的系统,这种现象会更加明显。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值