zoukankan      html  css  js  c++  java
  • Linux 了解内存使用情况

    通常我们是这样看内存的剩余情况的:

    [root@lw home]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3790        3416         144          21         229         114
    Swap:          3967        1526        2441

    那么这个信息是如何解读的呢,以下这个图解释的挺清楚的!

    上面的情况下我们总的内存有48262M,用掉了7913M。 其中buffer+cache总共14+267=281M, 由于这种类型的内存是可以回收的,虽然我们用掉了7913M,但是实际上我们如果实在需要的话,这部分buffer/cache内存是可以放出来的。

    我们来演示下:

    $ sudo sysctl vm.drop_caches=3
    vm.drop_caches = 3
    $ free -m
    [root@172-13-0-113 home]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3790        3416         144          21         3         41
    Swap:          3967        1526        2441

    我们把buffer/cache大部分都清除干净了,只用了44M,所以我们这次used的空间是7676M。
    到现在我们比较清楚几个概念:
    1. 总的内存多少
    2. buffer/cache内存可以释放的。
    3. used的内存的概率。

    统计所有进程占用的物理内存总和:

    #/bin/bash
    for PROC in `ls /proc/|grep "^[0‐9]"`
    do
    if [ ‐f /proc/$PROC/statm ]; then
    TEP=`cat /proc/$PROC/statm | awk '{print ($2)}'`
    RSS=`expr $RSS + $TEP`
    fi
    done
    RSS=`expr $RSS * 4 / 1024 / 1024`
    echo $RSS"GB"

    关于内存的去向主要有3个:1. 进程消耗。 2. slab消耗  3.pagetable消耗。统计这三个使用的内存:

    #/bin/bash
    for PROC in `ls /proc/|grep "^[0-9]"`
    do
      if [ -f /proc/$PROC/statm ]; then
          TEP=`cat /proc/$PROC/statm | awk '{print ($2)}'`
          RSS=`expr $RSS + $TEP`
      fi
    done
    RSS=`expr $RSS * 4`
    PageTable=`grep PageTables /proc/meminfo | awk '{print $2}'`
    SlabInfo=`cat /proc/slabinfo |awk 'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print sum/1024/1024}'`
     
    echo $RSS"KB", $PageTable"KB", $SlabInfo"MB"
    printf "rss+pagetable+slabinfo=%sMB
    " `echo $RSS/1024 + $PageTable/1024 + $SlabInfo|bc`
    free -m

    查看内存使用情况,查slab,/proc/meminfo

    也可以使用 nmon工具内存统计显示更加直观

    cat /proc/meminfo

    查看超过100M的 slab 缓存组件

    cat /proc/slabinfo |awk '{if($3*$4/1024/1024 > 100){print $1,$3*$4/1024/1024 "MB"} }'

    回收slab占用的内存

     echo 2 > /proc/sys/vm/drop_caches
  • 相关阅读:
    FiddlerCoreAPI 使用简介
    fiddler script建议教程
    PDF文本内容批量提取到Excel
    pymc_实现贝叶斯统计模型和马尔科夫链蒙塔卡洛
    贝叶斯
    Logistic Ordinal Regression
    逻辑回归原理_挑战者飞船事故和乳腺癌案例_Python和R_信用评分卡(AAA推荐)
    逻辑回归实战--美国挑战者号飞船事故_同盾分数与多头借贷Python建模
    python操作mysql数据库
    多元回归比一元回归优越性
  • 原文地址:https://www.cnblogs.com/VicLiu/p/15127454.html
Copyright © 2011-2022 走看看