zoukankan      html  css  js  c++  java
  • Linux 内存使用率

    文章参考:

    1、正确计算linux系统内存使用率

    2、Linux系统内存消失与slab使用之谜

    例如当前主机内存信息如下:

    复制代码
     1 [zhang@test ~]$ cat /proc/meminfo 
     2 MemTotal:       49294716 kB
     3 MemFree:         1179308 kB
     4 MemAvailable:   26672136 kB
     5 Buffers:          606420 kB
     6 Cached:         14511968 kB
     7 SwapCached:            0 kB
     8 Active:         21935144 kB
     9 Inactive:       11190500 kB
    10 Active(anon):   18008032 kB
    11 Inactive(anon):      324 kB
    12 Active(file):    3927112 kB
    13 Inactive(file): 11190176 kB
    14 Unevictable:           0 kB
    15 Mlocked:               0 kB
    16 SwapTotal:             0 kB
    17 SwapFree:              0 kB
    18 Dirty:              6544 kB
    19 Writeback:             0 kB
    20 AnonPages:      18007324 kB
    21 Mapped:           119976 kB
    22 Shmem:              1096 kB
    23 Slab:           14501480 kB
    24 SReclaimable:   10840908 kB
    25 SUnreclaim:      3660572 kB
    26 KernelStack:       17184 kB
    27 PageTables:        48212 kB
    28 NFS_Unstable:          0 kB
    29 Bounce:                0 kB
    30 WritebackTmp:          0 kB
    31 CommitLimit:    24647356 kB
    32 Committed_AS:   21739288 kB
    33 VmallocTotal:   34359738367 kB
    34 VmallocUsed:      117064 kB
    35 VmallocChunk:   34359585408 kB
    36 HardwareCorrupted:     0 kB
    37 AnonHugePages:   5376000 kB
    38 HugePages_Total:       0
    39 HugePages_Free:        0
    40 HugePages_Rsvd:        0
    41 HugePages_Surp:        0
    42 Hugepagesize:       2048 kB
    43 DirectMap4k:      305140 kB
    44 DirectMap2M:    50026496 kB
    复制代码

    内存使用率计算公式:

    复制代码
    1 UsedMem=MemTotal-(MemFree+Buffers+Cached+SReclaimable)
    2 内存使用率=UsedMem/MemTotal*100%
    3 
    4 当前主机内存使用率:
    5 49294716-(1179308+606420+14511968+10840908)=22156112
    6 22156112/49294716*100%=44.946%
    复制代码

    PS:什么是SReclaimable?在linux内核中会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry。那么这些对象如果每次构建的时候就向内存要一个页,而其实际大小可能只有几个字节,这样就非常浪费,为了解决这个问题就引入了一种新的机制来处理在同一页框中如何分配小存储器区,这个机制可以减少申请和释放内存带来的消耗,这些小存储器区的内存称为Slab。meminfo文件中标识了Slab的大小,而SReclaimable是指可收回Slab的大小。

    1 Slab=SReclaimable+SUnreclaim
  • 相关阅读:

    IT人的素质 & 设计杂谈
    结构化思维思维的结构
    [WM].NET CF下如何提高应用程序的性能 【转载】
    无题
    [WM]谁抢走了应用程序的性能? 【转载】
    繁体编码文本文件转换为简体编码的工具
    生成VB多行字符串常量的工具
    跟我一步一步开发自己的Openfire插件
    cnblogs博文浏览[推荐、Top、评论、关注、收藏]利器代码片段
  • 原文地址:https://www.cnblogs.com/shetao/p/14338272.html
Copyright © 2011-2022 走看看