zoukankan      html  css  js  c++  java
  • linux查看某个进程内存占用情况以及/proc/pid/status解释

    以nginx 为例
    1.top
    top -b -n 1 |grep nginx|awk '{print "VIRT:"$5,"RES:"$6,"cpu:"$9"%","mem:"$10"%"}'


    或者简单的top -p 进程id.

    2. ps aux | grep nginx
    VSZ -- 虚拟地址空间大小  --> 与top 的 VIRT 对应
    RSS -- 实际物理内存大小  --> 与top 的 RES 对应

    aux a-所有用户, x-运行, 结合才能列出所有pid 信息,u-user 信息,例如cpu,mem, tty, stat, 等信息,BSD 格式

    ef 选项: 使用标准格式显示每一个进程。 有一个PPID, 与aux BSD格式显示方式不同。

    3.cat /proc/pid/status
    pid 是你关心的nginx 进程pid.
    其中的
    VmRss   --> Rss
    VmSize  --> VSZ

    三种方法可以互相对照, 结果是一样的。

    /proc/pid/status解释

    /proc/9744$ cat status

    Name: gedit /*进程的程序名*/
    State: S (sleeping) /*进程的状态信息,具体参见http://blog.chinaunix.net/u2/73528/showart_1106510.html*/
    Tgid: 9744 /*线程组号*/
    Pid: 9744 /*进程pid*/
    PPid: 7672 /*父进程的pid*/
    TracerPid: 0 /*跟踪进程的pid*/
    Uid: 1000    1000    1000    1000 /*uid euid suid fsuid*/
    Gid: 1000    1000    1000    1000 /*gid egid sgid fsgid*/
    FDSize: 256 /*文件描述符的最大个数,file->fds*/
    Groups: 0 4 20 24 25 29 30 44 46 107 109 115 124 1000 /*启动该进程的用户所属的组的id*/
    VmPeak: 60184 kB /*进程地址空间的大小*/
    VmSize: 60180 kB /*进程虚拟地址空间的大小reserved_vm:进程在预留或特殊的内存间的物理页*/
    VmLck: 0 kB /*进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘*/
    VmHWM: 18020 kB /*文件内存映射和匿名内存映射的大小*/
    VmRSS: 18020 kB /*应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)*/
    VmData: 12240 kB /*程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据*/
    VmStk: 84 kB /*进程在用户态的栈的大小*/
    VmExe: 576 kB /*程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 */
    VmLib: 21072 kB /*被映像到任务的虚拟内存空间的库的大小*/
    VmPTE: 56 kB /*该进程的所有页表的大小*/
    Threads: 1 /*共享使用该信号描述符的任务的个数*/
    SigQ: 0/8183 /*待处理信号的个数/目前最大可以处理的信号的个数*/
    SigPnd: 0000000000000000 /*屏蔽位,存储了该线程的待处理信号*/
    ShdPnd: 0000000000000000 /*屏蔽位,存储了该线程组的待处理信号*/
    SigBlk: 0000000000000000 /*存放被阻塞的信号*/
    SigIgn: 0000000000001000 /*存放被忽略的信号*/
    SigCgt: 0000000180000000 /*存放被俘获到的信号*/
    CapInh: 0000000000000000 /*能被当前进程执行的程序的继承的能力*/
    CapPrm: 0000000000000000 /*进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的*/
    CapEff: 0000000000000000 /*是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性*/
    Cpus_allowed: 01 /*可以执行该进程的CPU掩码集*/
    Mems_allowed: 1 /**/
    voluntary_ctxt_switches: 1241 /*进程主动切换的次数*/
    nonvoluntary_ctxt_switches: 717 /*进程被动切换的次数*/
     
    FDSize: 32
    解释:
    FDSize是当前分配的文件描述符,这个值不是当前进程使用文件描述符的上限.
    我们看到这里是32,但实际并没有分配32个文件,如下:
    ls -l /proc/`pgrep rsyslogd|grep -v grep`/fd   
    total 0
    lrwx------ 1 root root 64 2011-04-20 20:03 0 -> socket:[5741]
    l-wx------ 1 root root 64 2011-04-20 20:03 1 -> /var/log/auth.log
    l-wx------ 1 root root 64 2011-04-20 20:03 10 -> /var/log/mail.err
    l-wx------ 1 root root 64 2011-04-20 20:03 11 -> /var/log/news/news.crit
    l-wx------ 1 root root 64 2011-04-20 20:03 12 -> /var/log/news/news.err
    l-wx------ 1 root root 64 2011-04-20 20:03 13 -> /var/log/news/news.notice
    l-wx------ 1 root root 64 2011-04-20 20:03 14 -> /var/log/debug
    l-wx------ 1 root root 64 2011-04-20 20:03 15 -> /var/log/messages
    lrwx------ 1 root root 64 2011-04-20 20:03 16 -> /dev/xconsole
    lr-x------ 1 root root 64 2011-04-20 20:03 17 -> /proc/kmsg
    l-wx------ 1 root root 64 2011-04-20 20:03 2 -> /var/log/syslog
    l-wx------ 1 root root 64 2011-04-20 20:03 3 -> /var/log/daemon.log
    l-wx------ 1 root root 64 2011-04-20 20:03 4 -> /var/log/kern.log
    l-wx------ 1 root root 64 2011-04-20 20:03 5 -> /var/log/lpr.log
    l-wx------ 1 root root 64 2011-04-20 20:03 6 -> /var/log/mail.log
    l-wx------ 1 root root 64 2011-04-20 20:03 7 -> /var/log/user.log
    l-wx------ 1 root root 64 2011-04-20 20:03 8 -> /var/log/mail.info
    l-wx------ 1 root root 64 2011-04-20 20:03 9 -> /var/log/mail.warn
    我们看到这里只用到了18个文件描述符.而如果超过32个文件描述符,将以32进行递增,如果是64位系统,将以64进行递增.
    FDSize这个值不会减少,如果我们程序打开了300个文件,并不会因为关闭文件,而减少FDSize这个值.
     参考:http://www.cnblogs.com/youxin/p/4744652.html
  • 相关阅读:
    涂鸦
    触发事件续
    触摸事件基本介绍
    背景平铺
    屏幕截图
    图片的裁剪
    图片水印
    UIKit绘图方法
    Java范型学习笔记
    《Head first设计模式》学习笔记
  • 原文地址:https://www.cnblogs.com/youxin/p/5976194.html
Copyright © 2011-2022 走看看