当前位置:  技术问答>linux和unix

如何得到每个进程的CPU和内存占有量?进来看看proc/pid 下的cpu 和 status 中内容的意义,谢谢!

    来源: 互联网  发布时间:2015-06-29

    本文导语:  问题:    想得到linux下每个进程的CPU和内存占有量,因此在/proc下的每个进程目录中找信息,mem文件中经常为空,最后找到两个地方:cpu 和 status两个文件,但对其内容的意义不了解,请高手指点:    cpu: 87 45 ...

问题:
   想得到linux下每个进程的CPU和内存占有量,因此在/proc下的每个进程目录中找信息,mem文件中经常为空,最后找到两个地方:cpu 和 status两个文件,但对其内容的意义不了解,请高手指点:
   cpu: 87 45 这是什么意思?应该取哪个?
   status: 内容如下;

[root@node150 1]# more status
Name:   init
State:  S (sleeping)
Tgid:   1
Pid:    1
PPid:   0
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 32
Groups:
VmSize:     1372 kB
VmLck:         0 kB
VmRSS:       480 kB
VmData:       36 kB
VmStk:         8 kB
VmExe:        24 kB
VmLib:      1276 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffd7f0d8fc
SigCgt: 00000000280b2603
CapInh: 0000000000000000
CapPrm: 00000000ffffffff
CapEff: 00000000fffffeff

1、到底哪一项才是进程真正的内存占有量?
2、很多进程目录下的status文件中下面几项没有,是否意味着该进程内存占有为0?
VmSize:     1372 kB
VmLck:         0 kB
VmRSS:       480 kB
VmData:       36 kB
VmStk:         8 kB
VmExe:        24 kB
VmLib:      1276 kB

|
int GetAppCrate(double* pdEffi, const char* szCmd)
{
FILE* fp;
char effi[12];
char line[128];
char cmdstring[64];

sprintf(cmdstring, "ps -C %s -o pcpu,cmd | grep %s", szCmd, szCmd);

if ( (fp = popen(cmdstring, "r")) == NULL ) /* fail to invoke popen() */
return -1;
*pdEffi = 0;
/* read first line */
while ( fgets(line, 128, fp) != NULL ) {
/* get first string in line */
if ( GetLineArg(line, effi, 0) == 0 ) {
*pdEffi += atof(effi);
}
}
pclose(fp);

return 0;
}

|
87是user space运行时间,45是system space运行时间。应该取哪个要看你怎么算。
VmRSS:       480 kB是进程真正的内存占有量。

|
/* define process status */
#define PID_STATUS_D 0 /* uninterruptible sleep */
#define PID_STATUS_R 1 /* runing   */ 
#define PID_STATUS_S 2 /* sleeping */
#define PID_STATUS_T 3 /* stoped   */
#define PID_STATUS_Z 4 /* zombie   */


static int IsDigitStr(const char* str)
{
int i;

for (i = 0; i 

    
 
 

您可能感兴趣的文章:

  • 请教:在/proc下从哪里可以得到每个进程的CPU和内存占有量
  • 呼唤高手:在/proc下从哪里可以得到每个进程的CPU和内存占有量 (第三贴了)
  • 给出IP和进程号,如何远程得到进程信息?
  • 怎么打开一个进程并得到这个进程内存使用的信息?
  • 新手提问:父进程结束时子进程会得到什么样的从系统发来的信号?
  • 请问:如果知道一个进程的pid 怎么得到他父进程的pid
  • 请问已知进程的PID,通过什么函数可以得到进程的名字?
  • 子进程如何得到父进程的pid?
  • Linux下得到进程号
  • 在程序中如何得到一个进程的状态?(不用ps命令),如何检查一个进程处于D状态(uninterruptible sleep)
  • 如何得到真正的进程号而非线程号
  • 父进程如何能得到其下子进程的PID?
  • 如何得到某个进程的特定信息?
  • 如果得到 execl 启动的程序的进程PID
  • 怎么得到linux系统进程列表
  • 先 fork 子进程然后 execl 另一个可执行程序, 如何得到这个可执行程序结束的返回值?
  • 怎么能得到一个给定进程(已知进程ID)的一些系统参数,发言就给分!
  • NOSQL iis7站长之家
  • 得到当前机器中所有运行进程的信息!!!
  • 怎么才能得到 一个进程所消耗的内存的大小呢 ??
  • 已知一个进程的PID,如何得到其他信息?
  • 如何通过/proc得到当前运行的所有进程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • 怎样得到当前目录(不是在java程序中得到)
  • File类的getLastModify()得到的是长型整数,如何才能得到一个已知文件日期?
  • DateFormat的用法?比如说现在想要得到21:38,我老是得到9:38
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 我用JFileChooser得到了某个文件夹名,但如何得到此文件夹下的所有文件名
  • 苦恼的中文乱码!!!在servlet中用request.getParameter("xingming")得到的姓名域值就变成了乱码"???",更别提下面的转化函数得到的结果了。
  • linux下如何编程得到网卡的硬件描述,如得到某块网卡为“3Com 3c590/3c595....”
  • 如何得到一个终端的终端号/标示?
  • 菜问一则:请问用什么命令可得到系统路径
  • getInitParameter为什么得到null
  • 请问调用那个方法能够得到变量类型的返回值?
  • 怎样得到系统日期?
  • 用java.util.random怎么得到一个指定区间的随机数
  • 如何得到linux机器的时钟频率?
  • 急!如何得到snmp工具的显示数据?
  • 如何得到文本框里的自动换行标志?
  • 如何得到本机所有IP
  • bash脚本程序如何得到自身的执行路径?
  • 请问各位,getYear()得到的当前年,怎么是102?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3