- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算Linux统和进程的CPU及内存使用率
基本原理 1)系统CPU使用率等于两个时间点的CPU非空闲时间差除以CPU时间总量差得到的百分比,这两者可从/proc/stat文件获得。 2)系统内存使用率等于系统物理内存消耗量除以系统物理内存总量(memtotal,以KB为单位)得到的百分比,这两者可从/proc/meminfo文件获得。 3)进程CPU使用率等于进程CPU时间(pct,以jiffies为单位)除以进程运行时间(pt)得到的百分比,pct从/proc/pid/stat文件读取utime和stime字段相加即得,pt等于系统运行时间(st,以秒为单位)减去进程启动时间(pst,以jiffies为单位),st从/proc/uptime文件获得,pst从/proc/pid/stat文件读取starttime字段获得。 4)进程内存使用率等于进程驻留集大小(rss)除以系统物理内存总量(memtotal,以KB为单位)得到的百分比,rss从/proc/pid/stat读取rss字段得到,以页数为单位。代码实现 1)基本结构和接口定义在proc_stat.h头文件内,如下所示
1struct sys_cpu_time 2{ 3 unsigned long long user,old_user; 4 unsigned long long nice,old_nice; 5 unsigned long long sys,old_sys; 6 unsigned long long idle,old_idle; 7 unsigned long long wait,old_wait; 8 unsigned long long hirq,old_hirq; 9 unsigned long long sirq,old_sirq;10};1112struct sys_uptime13{14 double uptime;15 double idle;16};1718struct sys_mem_info19{20 unsigned long main_total;21 unsigned long main_free;22 unsigned long main_used; 23 unsigned long main_buffers;24 unsigned long main_cached;25 unsigned long swap_total;26 unsigned long swap_free;27 unsigned long swap_used;28 unsigned long swap_cached;29};3031struct system_stat32{33 sys_cpu_time ct;34 sys_mem_info mi;35 sys_uptime ut;36};3738struct process_stat39{40 char name[16];41 char state;42 int ppid;43 int pgrp;44 int session;45 int tty_nr;46 int tpgid;47 unsigned int flags;48 unsigned long minflt;49 unsigned long cminflt;50 unsigned long majflt;51 unsigned long cmajflt;52 unsigned long utime;53 unsigned long stime;54 long cutime;55 long cstime;56 long priority;57 long nice;58 long threads;59 long iterealvalue;60 unsigned long long starttime;61 unsigned long vsize;62 long rss;63};6465struct sys_mem_entry66{67 const char *name;68 unsigned long *val;69} ;7071 static const int PROC_STAT = 0x0001;72static
文档评论(0)