美文网首页
linux新内核下free命令的变化

linux新内核下free命令的变化

作者: 斯科太 | 来源:发表于2018-07-06 17:36 被阅读0次

    在Ubuntu下查看内存,一般会使用free的命令,而最近使用这个命令的时候,好像突然察觉到有点不一样。平时都是只在乎free部分的数据,其他地方都是个未解之谜,网上查阅了一下资料,才发现这个变化有点了不得,立马记录下来(部分内容引用出处http://www.cnblogs.com/sparkdev/):

    以前的free的输出:

    free -m
                 total       used       free     shared    buffers     cached
    Mem:          2016       1973         42          0        163       1497
    -/+ buffers/cache:        312       1703
    Swap:         4094          0       4094
    

    【第一行:Mem行就是我们所说的内存啦】
    total:内存总数Total usable ram (i.e. physical ram minus a few reserved bits and the kernel binary code);
    used:已经使用的内存数,有多少偏差,不能尽信;
    free:空闲的内存数,未被分配的内存(感觉这里越多越浪费);
    shared:多个进程共享的内存总额(应该是不能乱释放的部分);
    buffers Buffer:缓存内存数(A buffer is something that has yet to be "written" to disk. );
    cached Page:缓存内存数(A cache is something that has been "read" from the disk and stored for later use.)。

    【第二行:-/+ buffers/cache是从前一直都不大理解的地方,现在正好整理一下:】
    由于buffer和cache其实也是属于可用内存的一部分,就好像你刚刚进行了复制操作或者打开了某文件,操作系统都会把这些内容neng到内存里头,方便你以后用或者稍后更快写入硬盘,因此这部分占用的内存是”容易”被释放的,但注意,这里使用“容易”表示不一定肯定可以被释放
    因此,以前是这样计算的:
    -/+ buffer/cache used 表示扣除“容易被释放的“内存之后,实际被使用的内存大小,由 MEM used减去 MEM buffers减去MEM cached 计算得出
    -/+ buffer/cache free 表示加上“容易被释放的“内存之后,实际可被分配使用的内存大小,由MEM free加上MEM buffers加上MEM cached计算得出

    【第三行:就是传说中的swap空间了】
    自从计算机性能上了一大台阶之后,大家都不怎么关注他了。根据我一家之言,这是在硬盘挖一大块空间出来作为内存的交换空间,说白了就是作为虚拟内存使用,说到虚拟内存,大家都会觉得不用好过用的了,本人曾经发生过虚拟内存被用爆的场景,相信大家都不希望发生那种情形的,最后只能强制关机了,因为操作系统被这个玩意儿直接拖垮了。如果有兴趣可以去文章开头那位大牛的博客了解一下swap。

    OK,以上就是旧版free命令的一些输出,下面开始来新free

    free
                  total        used        free      shared  buff/cache   available
    Mem:        1016060      542592      102148       29912      371320      240232
    Swap:             0           0           0
    

    眼尖的大家可能已经发现了,其实差别也很明显,第二行不见了,然后第一行多了一个叫做available的东西,顺便帮buffer和cache合并了。
    根据旧版各个字段的分析,根据本人瞎猜的经验,应该说在于buffer和cache都是属于”容易“被释放的,但实际上又不是能够100%被解放出来,那么之前第二行那种评估方式去计算系统可用内存其实有失偏颇的,于是现在系统直接帮你算了一个MEM available出来,如果要新建一个进程那么首先还得看这个剩余可用的内存够不够用。下面是来自官方更新的原文

    MemAvailable: An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone. The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.

    相关文章

      网友评论

          本文标题:linux新内核下free命令的变化

          本文链接:https://www.haomeiwen.com/subject/worbuftx.html