proc meminfoo 和procstats的区别

求教一下关于分析
/proc/meminfo 和 /proc/stat_linux吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:127,679贴子:
cat /proc/meminfoMemTotal:
8162328 kBMemFree:
4521092 kBMemAvailable:
5887872 kB为什么同时有 free 和 avaliable, 区别是什么?
如何计算已占用百分比?cat /proc/statcpu
4 2 0 0 0cpu0 03 93 1
0cpu1 60 1 0 12 0 0 0cpu2 35 1 0 21 0 0 0cpu3 79 6 0 18 0 0 0cpu 信息如何算出使用百分比?
Memavailable包括了MemFree和计算Cpu使用率需要储存上一个interval的数据,等待,然后和本interval的数据比对
弄个桌面显示插件
左手湘江:回复 持硬币的少年 :不知道你用的狠不狠啊,前几天给我一个长辈装的是AMD的FX双核机器。她就用来看看股票,看看优酷的太极教程。4G内存足够用。如果顺带还要看一下高清电影的话,我推荐你还是上个奔腾G吧,毕竟很多人的客厅多媒体都是用的奔腾G。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或* =====================================================================================
proc_more.c
Description:
日 11时34分40秒
linkscue (scue),
Organization:
* =====================================================================================
19 #include &stdio.h&
20 #include &sys/time.h&
21 #include &sys/types.h&
22 #include &sys/stat.h&
23 #include &unistd.h&
24 #include &fcntl.h&
25 #include &stdlib.h&
26 #include &string.h&
27 void sampleLoadAvg(){
char buffer[80]="";
/* 定义字符串并初始化为'\0' */
char buf[5][10];
char *file="/proc/loadavg";
f = open(file, O_RDONLY);
if (f == 0)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
read(f, (void *)buffer, 80);
sscanf(buffer, "%s %s %s %s %s",
/* sscanf()拆分成多个字符串 */
&buf[0],&buf[1],&buf[2],&buf[3],&buf[4]);
printf("一分钟平均负载:%s\n", buf[0]);
printf("五分钟平均负载:%s\n", buf[1]);
printf("一刻钟平均负载:%s\n", buf[2]);
printf("采样时刻的间隔:%s\n", buf[3]);
printf("最大线程的数目:%s\n", buf[4]);
48 void sampleTime(){
char buffer[80]="";
char buf[2][10];
float seconds=0;
float secondr=0;
char *file="/proc/uptime";
f = open(file, O_RDONLY);
if (f == 0)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
read(f, (void *)buffer, 80);
sscanf(buffer, "%s %s", &buf[0], &buf[1]);
printf("系统运行时间:\t%s秒\n", buf[0]);
printf("系统空闲时间:\t%s秒\n", buf[1]);
seconds=strtof(buf[0],NULL);
secondr=strtof(buf[1],NULL);
printf("系统运行时间:\t%03d天%02d时%02d分%02.6f秒\n",
(int)seconds/(24*3600),
((int)seconds/(3600))%(24),
((int)seconds/60)%60,
((int)seconds%60)+(seconds-(int)seconds)); /* 秒(精确至毫秒) */
printf("系统空闲时间:\t%03d天%02d时%02d分%02.6f秒\n",
(int)secondr/(24*3600),
((int)secondr/(3600))%(24),
((int)secondr/60)%60,
((int)secondr%60)+(secondr-(int)secondr)); /* 秒(精确至毫秒) */
81 void sampleKernelVersion(){
char buffer[80]="";
char *file="/proc/sys/kernel/version";
f = open(file, O_RDONLY);
if (f == 0)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
read(f, (void *)buffer, 80);
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
printf("当前内核版本:\t%s\n", buffer);
97 void sampleOsRelease(){
char buffer[80]="";
char *file="/proc/sys/kernel/osrelease";
f = open(file, O_RDONLY);
if (f == 0)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
read(f, (void *)buffer, 80);
buffer[strlen(buffer)-1]=0;
printf("当前发行版本:\t%s\n", buffer);
113 void sampleOsType(){
char buffer[80]="";
char *file="/proc/sys/kernel/ostype";
f = open(file, O_RDONLY);
if (f == 0)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
read(f, (void *)buffer, 80);
buffer[strlen(buffer)-1]=0;
printf("当前操作系统:\t%s\n", buffer);
129 void sampleDiskStat(){
int nread=0;
ssize_t len = 0;
char *buffer=NULL;
char buf[20][32];
char *file="/proc/diskstats";
fp = fopen(file, "rb");
if (fp == NULL)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
写次数\n");
while((nread = getline(&buffer, &len, fp)) != -1) { /* 简单实现读行的功能 */
sscanf(buffer, "%04s%08s%s %s %s %s %s %s %s %s %s %s %s %s",
&buf[0],&buf[1],&buf[2],&buf[3],&buf[4],&buf[5],&buf[6],
&buf[7],&buf[8],&buf[9],&buf[10],&buf[11],&buf[12],&buf[13]);
if ((p=strstr(buf[2], "loop"))!=NULL)
/* loop本地回路不作操作 */
printf("%06s%08s%08s\n",
&buf[2],&buf[3], &buf[7]);
160 void sampleProcesses(void)
int nread=0;
ssize_t len = 0;
char *buf=NULL;
char *buffer=NULL;
char *file="/proc/stat";
fp = fopen(file, "rb");
if (fp == NULL)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
while((nread = getline(&buffer, &len, fp)) != -1) {
if((buf=strstr(buffer, "processes"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
char count[16]="";
sscanf(buffer, "%s%s", count, count);
printf("执行线程数目:\t%s\n", count);
184 void sampleContext(void)
int nread=0;
ssize_t len = 0;
char *buf=NULL;
char *buffer=NULL;
char *file="/proc/stat";
fp = fopen(file, "rb");
if (fp == NULL)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
while((nread = getline(&buffer, &len, fp)) != -1) {
if((buf=strstr(buffer, "ctxt"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
char count[16]="";
sscanf(buffer, "%s%s", count, count);
printf("上下文切换次数:\t%s\n", count);
208 void sampleMeminfo()
int nread=0;
ssize_t len = 0;
char *buf=NULL;
char *buffer=NULL;
char *file="/proc/meminfo";
char content[16]="";
fp = fopen(file, "rb");
if (fp == NULL)
printf("error to open: %s\n", file);
exit(EXIT_FAILURE);
while((nread = getline(&buffer, &len, fp)) != -1) {
if((buf=strstr(buffer, "MemTotal"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
sscanf(buffer, "%s%s", content, content);
int memtotal_kb=(int)(strtof(content, NULL));
printf("内存总容量:\t%dG%4dM %4dK\n",
memtotal_kb/(1024*1024),
(memtotal_kb/(1024))%1024,
(memtotal_kb%(1024*1024))%1024);
if((buf=strstr(buffer, "MemFree"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
sscanf(buffer, "%s%s", content, content);
int memfree_kb=(int)(strtof(content, NULL));
printf("内存可用容量:\t%dG%4dM %4dK\n",
memfree_kb/(1024*1024),
(memfree_kb/(1024))%1024,
(memfree_kb%(1024*1024))%1024);
if((buf=strstr(buffer, "SwapTotal"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
sscanf(buffer, "%s%s", content, content);
int swaptotal_kb=(int)(strtof(content, NULL));
printf("SWAP总容量:\t%dG%4dM %4dK\n",
swaptotal_kb/(1024*1024),
(swaptotal_kb/(1024))%1024,
(swaptotal_kb%(1024*1024))%1024);
if((buf=strstr(buffer, "SwapFree"))!=NULL)
/* 简单实现grep的功能 */
buffer[strlen(buffer)-1]=0;
/* 简单实现tr()函数的功能 */
sscanf(buffer, "%s%s", content, content);
int swapfree_kb=(int)(strtof(content, NULL));
printf("SWAP可用容量:\t%dG%4dM %4dK\n",
swapfree_kb/(1024*1024),
(swapfree_kb/(1024))%1024,
(swapfree_kb%(1024*1024))%1024);
/* 所需的信息已满足,退出循环 */
======================================================================
Description:
* =====================================================================================
273 int main ( int argc, char *argv[] )
printf("&&&系统负载&&&\n");
sampleLoadAvg();
printf("----------------------------------------\n");
printf("\n");
printf("&&&运行时间&&&\n");
sampleTime();
printf("\n");
printf("&&&版本信息&&&\n");
sampleOsType();
sampleOsRelease();
sampleKernelVersion();
printf("----------------------------------------\n");
printf("\n");
printf("&&&磁盘信息&&&\n");
sampleDiskStat();
printf("----------------------------------------\n");
printf("\n");
printf("&&&上下文切换&&&\n");
sampleContext();
printf("----------------------------------------\n");
printf("\n");
printf("&&&线程数目&&&\n");
sampleProcesses();
printf("----------------------------------------\n");
printf("\n");
printf("&&&内存信息&&&\n");
sampleMeminfo();
printf("----------------------------------------\n");
return EXIT_SUCCESS;
阅读(...) 评论()

我要回帖

更多关于 proc meminfo 的文章

 

随机推荐