• swap 查看进程占用swap


    在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中  ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些。
    cat /proc/1/smaps

    这里解释下samps里面的内容:
    bfdca000-bfddf000 是该虚拟内存段的开始和结束位置
    rw-p 内存段的权限,rw是指可读写,p是指私有,如果是s则为共享
    bffea000 该虚拟内存段在对应的映射文件中的偏移量
    00:00 文件的主设备和次设备号
    0 被映射到虚拟内存的文件的索引节点号
    [stack] 被映射到虚拟内存的文件名称
    Size 是进程使用内存空间,并不一定实际分配了内存(VSS)
    Rss是实际分配的内存(不需要缺页中断就可以使用的)
    Shared_Clean 和其他进程共享的未改写页面
    Shared_Dirty 和其他进程共享的已改写页面
    Private_Clean 未改写的私有页面页面
    Private_Dirty 已改写的私有页面页面
    Swap 存在于交换分区的数据大小(如果物理内存有限,可能存在一部分在主存一部分在交换分区)
    Pss是平摊计算后的使用内存(有些内存会和其他进程共享,例如mmap进来的)

    这里能显示出swap
    那么查看你想要看的进程所使用的swap只需要:

    awk '/^Swap:/ {SWAP+=$2}END{print SWAP" KB"}' /proc/$(pid)/smaps
    awk '/^Swap:/ {SWAP+=$2}END{if(SWAP != 0) print  SWAP" KB"}' /proc/99579/smaps
    function getswap {
    SUM=0
    OVERALL=0
    for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; 
    do
        PID=`echo $DIR | cut -d / -f 3`
        PROGNAME=`ps -p $PID -o comm --no-headers`
        for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
        do
            let SUM=$SUM+$SWAP
        done
        echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
        let OVERALL=$OVERALL+$SUM
        SUM=0
    done
    echo "Overall swap used: $OVERALL"
    }
     
    getswap

    参考:

    https://blog.csdn.net/xiangliangyu/article/details/8213127

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/litzhiai/p/14744814.html
Copyright © 2020-2023  润新知