• Linux内存信息查看——free命令


      free 命令可以显示系统已用和空闲的内存情况。包括物理内存、交互区内存(swap)和内核缓冲区内存(buffer)。共享内存将被忽略。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

    1 用法及常用参数

    free [option] 
    
    -b  # 以Byte为单位显示内存使用情况
    -k  # 以KB为单位显示内存使用情况 
    -m  # 以MB为单位显示内存使用情况
    -g   # 以GB为单位显示内存使用情况
    -h   # 自动转换单位(最常用)
    -o  # 不显示缓冲区调节列 
    -s <间隔秒数>  # 持续观察内存使用状况 
    -t  # 显示内存总和列 
    -V  # 显示版本信息 
    

    2 命令输出的结果详解

    在终端输入free。结果如下:

    [@bjzw_106_203 ~]# free
                 total       used       free     shared    buffers     cached
    Mem:       8182340    7909480     272860          0     463820    5228244
    -/+ buffers/cache:    2217416    5964924
    Swap:      1048568       2612    1045956

    Mem :表示物理内存的统计(系统已使用、空闲的内存)。

    -/+ buffers/cache: 应用程序已使用的、空闲的物理内存。

    Swap:交换分区的内存统计。

    total:表示物理内存总量(total = used + free)
    used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
    free:未被分配的内存。
    shared:多个进程共享的内存总额。
    buffers:系统分配但未被使用的buffers 数量。
    cached:系统分配但未被使用的cache 数量。

    强调一下buffers和cached的区别:

      对于应用程序来说:buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。可用内存=系统free memory+buffers+cached。

    buffers:是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages。也就是说,buffers是用来存储,目录里面有什么内容,权限等等。
    cached:直接用来记忆我们打开的文件,是用来给文件做缓冲的。

    综上所述,

      对操作系统来讲是:Mem的参数buffers/cached 都是属于被使用,所以它认为free只有272860;
      对应用程序来讲是:(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。以应用来看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了。

    3 说说Swap

    当可用内存少于额定值的时候,就会开会进行交换。额定值被定义在/proc/meminfo 这个文件。

    [@bjzw_106_203 ~]# cat /proc/meminfo
    MemTotal:      8182340 kB
    MemFree:        346672 kB
    Buffers:        463956 kB
    Cached:        5156992 kB
    SwapCached:          0 kB
    Active:        3027644 kB
    Inactive:      4170020 kB
    HighTotal:           0 kB
    HighFree:            0 kB
    LowTotal:      8182340 kB
    LowFree:        346672 kB
    SwapTotal:     1048568 kB
    SwapFree:      1045956 kB
    Dirty:              48 kB
    Writeback:           0 kB
    AnonPages:     1576704 kB
    Mapped:          23552 kB
    Slab:           422056 kB
    PageTables:     164404 kB
    NFS_Unstable:        0 kB
    Bounce:              0 kB
    CommitLimit:   5139736 kB
    Committed_AS:  5433220 kB
    VmallocTotal: 34359738367 kB
    VmallocUsed:      1260 kB
    VmallocChunk: 34359720023 kB
    HugePages_Total:     0
    HugePages_Free:      0
    HugePages_Rsvd:      0
    Hugepagesize:     2048 kB

    交换将通过三个途径来减少系统中使用的物理页面的个数:

    (1) 减少缓冲与页面cache的大小;
    (2) 将系统V类型的内存页面交换出去; 
    (3) 换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
    少量地使用swap是不会影响到系统性能的。

      追踪Linux系统的内存使用一直是个难题,很多人试着把能想到的各种内存消耗都加在一起,kernel text、kernel modules、buffer、cache、slab、page table、process RSS…等等,却总是与物理内存的大小对不上,这是为什么呢?因为Linux kernel并没有滴水不漏地统计所有的内存分配,kernel动态分配的内存中就有一部分没有计入/proc/meminfo中。

  • 相关阅读:
    Java + Element-UI 实现简单的树形菜单
    简单了解一下 Nginx
    使用阿里云 OSS 存储、访问图片(Java)
    JSR 303 进行后台数据校验
    SpringBoot 常用注解
    12、js——轮播图
    11、js——定时调用和延时调用
    11、js——BOM
    10、js——事件
    9、js——样式相关的操作
  • 原文地址:https://www.cnblogs.com/zingp/p/8022717.html
Copyright © 2020-2023  润新知