From: Tyrel D. <ty...@us...> - 2010-11-06 01:39:02
|
Update of /cvsroot/sblim/gather/plugin In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv7930/plugin Modified Files: metricUnixProcess.c Log Message: Fixed 3098510: add process name to UnixProcessMetric Index: metricUnixProcess.c =================================================================== RCS file: /cvsroot/sblim/gather/plugin/metricUnixProcess.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- metricUnixProcess.c 20 May 2009 19:39:56 -0000 1.13 +++ metricUnixProcess.c 6 Nov 2010 01:38:54 -0000 1.14 @@ -170,6 +170,8 @@ char * ptr = NULL; char * end = NULL; char * hlp = NULL; + char * procname = NULL; + char * resname = NULL; char buf[4096]; char os_buf[4096]; int _enum_size = 0; @@ -219,8 +221,18 @@ strcat(buf,_enum_pid + (i*64)); strcat(buf,"/stat"); if( (fhd = fopen(buf,"r")) != NULL ) { - fscanf(fhd,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lld %lld", + fscanf(fhd,"%as %as %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lld %lld", + &resname, + &procname, &u_time,&k_time ); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + fclose(fhd); } @@ -230,7 +242,7 @@ mv = calloc( 1, sizeof(MetricValue) + (strlen(buf)+1) + - (strlen(_enum_pid+(i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -239,7 +251,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); strncpy( mv->mvData, buf, strlen(buf) ); mv->mvResource = (char*)mv + sizeof(MetricValue) + (strlen(buf)+1); - strcpy(mv->mvResource,_enum_pid+(i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } @@ -260,6 +273,8 @@ MetricValue * mv = NULL; FILE * fhd = NULL; char * _enum_pid = NULL; + char * resname = NULL; + char * procname = NULL; char buf[254]; int _enum_size = 0; int i = 0; @@ -288,16 +303,26 @@ strcat(buf,_enum_pid + (i*64)); strcat(buf,"/stat"); if( (fhd = fopen(buf,"r")) != NULL ) { - fscanf(fhd,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " + fscanf(fhd,"%as %as %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " "%*s %*s %*s %*s %*s %*s %*s %*s %*s %lld %*s", + &resname, + &procname, &rss); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + fclose(fhd); size = rss * sysconf(_SC_PAGESIZE); } mv = calloc( 1, sizeof(MetricValue) + sizeof(unsigned long long) + - (strlen(_enum_pid + (i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -306,7 +331,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); *(unsigned long long *)mv->mvData = htonll(size); mv->mvResource = (char*)mv + sizeof(MetricValue) + sizeof(unsigned long long); - strcpy(mv->mvResource,_enum_pid + (i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } @@ -327,6 +353,8 @@ MetricValue * mv = NULL; FILE * fhd = NULL; char * _enum_pid = NULL; + char * resname = NULL; + char * procname = NULL; char buf[254]; int _enum_size = 0; int i = 0; @@ -355,14 +383,24 @@ strcat(buf,"/stat"); if( (fhd = fopen(buf,"r")) != NULL ) { fscanf(fhd, - "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lld", + "%as %as %*s %*s %*s %*s %*s %*s %*s %*s %*s %lld", + &resname, + &procname, &page); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + fclose(fhd); } mv = calloc( 1, sizeof(MetricValue) + sizeof(unsigned long long) + - (strlen(_enum_pid + (i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -371,7 +409,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); *(unsigned long long*)mv->mvData = htonll(page); mv->mvResource = (char*)mv + sizeof(MetricValue) + sizeof(unsigned long long); - strcpy(mv->mvResource,_enum_pid + (i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } @@ -392,6 +431,8 @@ MetricValue * mv = NULL; FILE * fhd = NULL; char * _enum_pid = NULL; + char * resname = NULL; + char * procname = NULL; char buf[254]; int _enum_size = 0; int i = 0; @@ -420,16 +461,26 @@ strcat(buf,"/stat"); if( (fhd = fopen(buf,"r")) != NULL ) { fscanf(fhd, - "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " + "%as %as %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " "%*s %*s %*s %*s %lld", + &resname, + &procname, &page); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + fclose(fhd); } mv = calloc( 1, sizeof(MetricValue) + sizeof(unsigned long long) + - (strlen(_enum_pid + (i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -438,7 +489,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); *(unsigned long long*)mv->mvData = htonll(page); mv->mvResource = (char*)mv + sizeof(MetricValue) + sizeof(unsigned long long); - strcpy(mv->mvResource,_enum_pid + (i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } @@ -459,6 +511,8 @@ MetricValue * mv = NULL; FILE * fhd = NULL; char * _enum_pid = NULL; + char * resname = NULL; + char * procname = NULL; char buf[254]; int _enum_size = 0; int i = 0; @@ -485,15 +539,25 @@ strcat(buf,_enum_pid + (i*64)); strcat(buf,"/stat"); if( (fhd = fopen(buf,"r")) != NULL ) { - fscanf(fhd,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " + fscanf(fhd,"%as %as %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s " "%*s %*s %*s %*s %*s %*s %*s %*s %lld", + &resname, + &procname, &size); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + fclose(fhd); } mv = calloc( 1, sizeof(MetricValue) + sizeof(unsigned long long) + - (strlen(_enum_pid + (i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -502,7 +566,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); *(unsigned long long *)mv->mvData = htonll(size); mv->mvResource = (char*)mv + sizeof(MetricValue) + sizeof(unsigned long long); - strcpy(mv->mvResource,_enum_pid + (i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } @@ -523,6 +588,8 @@ MetricValue * mv = NULL; FILE * fhd = NULL; char * _enum_pid = NULL; + char * resname = NULL; + char * procname = NULL; char buf[254]; int _enum_size = 0; int i = 0; @@ -554,11 +621,28 @@ fclose(fhd); } + memset(buf,0,sizeof(buf)); + strcpy(buf,"/proc/"); + strcat(buf,_enum_pid + (i*64)); + strcat(buf,"/stat"); + if ((fhd = fopen(buf,"r")) != NULL) { + fscanf(fhd,"%as %as", &resname, &procname); + + /* remove parens from procname and concatenate as "pid.procname" */ + procname[0] = '.'; + procname[strlen(procname) - 1] = 0; + resname = realloc(resname, strlen(resname) + strlen(procname) + 1); + strcat(resname, procname); + free(procname); + + fclose(fhd); + } + size = size * sysconf(_SC_PAGESIZE); mv = calloc( 1, sizeof(MetricValue) + sizeof(unsigned long long) + - (strlen(_enum_pid + (i*64))+1) ); + (strlen(resname)+1) ); if (mv) { mv->mvId = mid; mv->mvTimeStamp = time(NULL); @@ -567,7 +651,8 @@ mv->mvData = (char*)mv + sizeof(MetricValue); *(unsigned long long *)mv->mvData = htonll(size); mv->mvResource = (char*)mv + sizeof(MetricValue) + sizeof(unsigned long long); - strcpy(mv->mvResource,_enum_pid + (i*64)); + strcpy(mv->mvResource,resname); + free(resname); mret(mv); } } |