现在的位置: 首页 > 综合 > 正文

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

2017年12月27日 ⁄ 综合 ⁄ 共 1721字 ⁄ 字号 评论关闭

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

版本一:

先引用百度知道的提问:

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


回答的答案是:

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

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,有几种算法如下:

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

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

或者

(MemUsed / MemTotal)/MemTotal * 100%

②计算物理内存的使用

(-/+Used / MemTotal) * 100%

3,总结如下:

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

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

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

抱歉!评论已关闭.