STABLE14-xstat-fs-callbacks-20060309

FIXES 27912

add new collection with callback stats


(cherry picked from commit cc324ae0653a7d2170a065f61b8475d76cdf03c1)
This commit is contained in:
Rainer Toebbicke 2006-03-09 16:28:59 +00:00 committed by Derrick Brashear
parent 12c964ea9d
commit ed422b3da0
3 changed files with 63 additions and 0 deletions

View File

@ -127,6 +127,7 @@ const AFSCB_XSTATSCOLL_FULL_PERF_INFO = 2; /*CM performance info*/
const AFS_XSTATSCOLL_CALL_INFO = 0; /*FS call counting & info*/
const AFS_XSTATSCOLL_PERF_INFO = 1; /*FS performance info*/
const AFS_XSTATSCOLL_FULL_PERF_INFO = 2; /*Full FS performance info*/
const AFS_XSTATSCOLL_CBSTATS = 3; /*Callback package counters */
typedef afs_uint32 VolumeId;
typedef afs_uint32 VolId;

View File

@ -5950,6 +5950,36 @@ SRXAFS_GetXStats(struct rx_call *a_call, afs_int32 a_clientVersionNum,
#endif
break;
case AFS_XSTATSCOLL_CBSTATS:
afs_perfstats.numPerfCalls++;
dataBytes = sizeof(struct cbcounters);
dataBuffP = (afs_int32 *) malloc(dataBytes);
{
extern struct cbcounters cbstuff;
dataBuffP[0]=cbstuff.DeleteFiles;
dataBuffP[1]=cbstuff.DeleteCallBacks;
dataBuffP[2]=cbstuff.BreakCallBacks;
dataBuffP[3]=cbstuff.AddCallBacks;
dataBuffP[4]=cbstuff.GotSomeSpaces;
dataBuffP[5]=cbstuff.DeleteAllCallBacks;
dataBuffP[6]=cbstuff.nFEs;
dataBuffP[7]=cbstuff.nCBs;
dataBuffP[8]=cbstuff.nblks;
dataBuffP[9]=cbstuff.CBsTimedOut;
dataBuffP[10]=cbstuff.nbreakers;
dataBuffP[11]=cbstuff.GSS1;
dataBuffP[12]=cbstuff.GSS2;
dataBuffP[13]=cbstuff.GSS3;
dataBuffP[14]=cbstuff.GSS4;
dataBuffP[15]=cbstuff.GSS5;
}
a_dataP->AFS_CollData_len = dataBytes >> 2;
a_dataP->AFS_CollData_val = dataBuffP;
break;
default:
/*
* Illegal collection number.

View File

@ -494,6 +494,34 @@ PrintPerfInfo()
PrintOverallPerfInfo(perfP);
}
static char *CbCounterStrings[] = {
"DeleteFiles",
"DeleteCallBacks",
"BreakCallBacks",
"AddCallBack",
"GotSomeSpaces",
"DeleteAllCallBacks",
"nFEs", "nCBs", "nblks",
"CBsTimedOut",
"nbreakers",
"GSS1", "GSS2", "GSS3", "GSS4", "GSS5"
};
void
PrintCbCounters() {
int numInt32s = sizeof(CbCounterStrings)/sizeof(char *);
int i;
afs_uint32 *val=xstat_fs_Results.data.AFS_CollData_val;
if (numInt32s > xstat_fs_Results.data.AFS_CollData_len)
numInt32s = xstat_fs_Results.data.AFS_CollData_len;
for (i=0; i<numInt32s; i++) {
printf("\t%10u %s\n", val[i], CbCounterStrings[i]);
}
}
/*------------------------------------------------------------------------
* FS_Handler
@ -550,6 +578,10 @@ FS_Handler()
PrintFullPerfInfo();
break;
case AFS_XSTATSCOLL_CBSTATS:
PrintCbCounters();
break;
default:
printf("** Unknown collection: %d\n",
xstat_fs_Results.collectionNumber);