Linux内存:MemTotal、MemFree、MemAvailable三者区别

今天一位朋友在了解Linux查看内存使用情况的时候,其中涉及到很多内存的相关知识,这不,今天我朋友就对命令:cat /proc/meminfo 结果中出来的MemTotal、Memory Free和Memory Avaliable这三个参数比较疑惑。

[[email protected] ~]# cat /proc/meminfo
MemTotal:        3785108 kB
MemFree:          708756 kB
MemAvailable:    1254960 kB
Buffers:           66624 kB
Cached:           589396 kB
SwapCached:        19524 kB
......

cat /proc/meminfo

因此,我简单给大家讲一下,做一个粗略的解答整理吧!

 

1、MemTotal:内存总数

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

 

2、MemFree:空闲内存数

表示系统尚未使用的内存。MemUsed=MemTotal-MemFree 就是已被用掉的内存。

 

3、MemAvailable:可用内存数

应用程序可用内存数。系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以MemFree不能代表全部可用的内存,这部分可回收的内存加上MemFree才是系统可用的内存,即:MemAvailable≈MemFree+Buffers+Cached,它是内核使用特定的算法计算出来的,是一个估计值。它与MemFree的关键区别点在于,MemFree是说的系统层面,MemAvailable是说的应用程序层面。

 

4、Buffer:缓冲区内存数

 

5、Cache:缓存区内存数

 

6、Shared:多个进程共享的内存空间,不常用,暂不讨论。

 

Buffer与Cache的区别:

这里说下buffer与cache的区别,首先,从字面意义上讲,buffer是缓冲的意思,cache是缓存的意思。举个现实中的例子,比说铁道头上像弹簧一样的东西,就叫缓冲;部署在森林里的存应急物资的保管箱,名叫“Food Cache”,类似一种保存箱。

其次,常见的说法,叫write-buffer和read-cache,buffer一般用作写操作上,cache一般用在读操作上,不过也不是一成不变的; 举例说明,每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了;Cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到加快取速度的作用。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了,加快了数据取用的速度。

 

内存计算公式:

参照 free 的输出结果,这里有几个计算公式:

[[email protected] ~]# free
             total       used       free     shared    buffers     cached
Mem:      16433020    1827360   14605660        740     203540    1051400
-/+ buffers/cache:     572420   15860600
Swap:      8388604          0    8388604

为了直观说明,我们把:

第2行,Mem 行,我这里称作 OS Mem;

第3行,buffers/cache 行,称作 APP buffer/cache:

 

OS Mem total = OS Mem used + OS Mem free

APP buffers/cache used = OS Mem used - OS Mem buffers - OS Mem cached

APP buffers/cache free = OS Mem free + OS Mem buffers + OS Mem cached

APP buffers/cache total = APP buffers/cache used + APP buffers/cache free = OS Mem total

 

总结:

虽然文章中讲的也比较简单,但是也涉及了一些Linux内存参数详细说明,有想了解的朋友们也可以去看一下。

    A+
发布日期:2021年01月26日 10:48:37  所属分类:Linux
最后更新时间:2021-01-26 10:49:11
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
付杰
JAVA从入门到精通视频教程(实战)
  • ¥ 99.0元
  • 市场价:99.0元
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 49.9元
  • 市场价:99.9元
Swoole从入门到精通(第一季)
  • ¥ 199.0元
  • 市场价:199.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 站元素主机 0

    涨知识了 赞一个