linux c 获取进程内存地址,linux C获取进程的CPU和内存

获取内存开始尝试用getrusage,发现数值一直是0的,,,后面查资料,该函数内存相关的字段还没实现(unmaintained)。

使用statm的,发现rss和data位即使top时看到的内存已经下降了但是数值仍然不变,只能通过resident字段来获取当前进程所占用的内

size       (1) total program size

(same as VmSize in /proc/[pid]/status)

resident   (2) resident set size

(same as VmRSS in /proc/[pid]/status)

share      (3) shared pages (i.e., backed by a file)

text       (4) text (code)

lib        (5) library (unused in Linux 2.6)

data       (6) data + stack

dt         (7) dirty pages (unused in Linux 2.6)

FILE *f = fopen("/proc/self/statm","r");

if(f){

i = fscanf(f,"%u%u%u%u%u%u%u",

&n_rss,&n_resident,&n_share,&n_text,&n_lib,&n_data,&n_dt);

fclose(f);

}

else

{

IMIO::instance()->log(INFO, "open /proc/self/statm fail");

}

n_rss = n_resident * 4 / 1024;

if (n_rss < 1024*1.5 && s_freereq.size() > s_threadnum/3)

{

return ;

}

static unsigned int s_CLOCKS_PER_SEC_100 = CLOCKS_PER_SEC / 100;

clock_t ct0, ct1;

ct0 = clock ();

sleep(1);

ct1 = clock ();

char buf[256];

sprintf(buf, "rss=%u,mshare=%u;freereq=%ld;cpu=%ld;", n_rss, n_share/1024, s_freereq.size(), (ct1 - ct0) /s_CLOCKS_PER_SEC_100);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值