IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux系统查看可用内存

    nanxiao发表于 2017-02-25 03:53:04
    love 0

    http://www.linuxatemyram.com/提到使用free命令查看Linux系统使用内存时,used一项会把当前cache的大小也会加进去,这样会造成free这一栏显示的内存特别少:

    $ free -m
                   total        used        free      shared  buff/cache   available
    Mem:           1504        1491          13           0         855      869
    Swap:          2047           6        2041
    

    可是实际上,cache根据应用程序的需要是可以回收利用的,因此free这一栏并不能真实地表现有多少“可以使用”的内存。实际系统可用内存应该以available数据为准。

    linuxatemyram所提到的free命令也许是比较老的版本,我尝试了RHEL 7.2,Ubuntu 16.04和Arch Linux这3个Linux发行版,均没有出现used包含cache的情况:

    $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:          64325       47437        3150        1860       13737       14373
    

    另外,从man free命令中也可以得到,目前计算used的值是要减掉free和buff/cache的:

    used Used memory (calculated as total – free – buffers – cache)

    可以使用-w命令行选项得到buff和cache各自使用的数量:

    $ free -wm
                  total        used        free      shared     buffers       cache   available
    Mem:          64325       48287        2476        1859        1430       12131       13524
    

    需要注意的是,free表示的是当前完全没有被程序使用的内存;而cache在有需要时,是可以被释放出来以供其它进程使用的(当然,并不是所有cache都可以释放,比如当前被用作ramfs的内存)。而available才真正表明系统目前可以提供给应用程序使用的内存。/proc/meminfo从3.14内核版本开始提供MemAvailable的值;在2.6.27~3.14版本之间,是free程序自己计算available的值;早于2.6.27版本,available的值则同free一样。

    参考资料:
    Understanding output of free in Ubuntu 16.04;
    How can I get the amount of available memory portably across distributions?。



沪ICP备19023445号-2号
友情链接