Using some old code of mine, a modified pmclient I used to learn a few
things, I am finding the instance domains don't match up? It seems that
there is bogus entry in the metrics.
From the .h
proc.psinfo.cmd CMD
proc.psinfo.psargs PSARGS
proc.psinfo.pid PID
proc.psinfo.ppid PPID
proc.psinfo.pgrp PGRP
proc.psinfo.session SESSION
proc.psinfo.utime U_TIME
proc.psinfo.stime S_TIME
From the code:
fprintf(stderr,"PID %d\n",crp->vset[PID]->numval);
fprintf(stderr,"CMD %d\n",crp->vset[CMD]->numval);
fprintf(stderr,"UID_NM %d\n",crp->vset[UID_NM]->numval);
fprintf(stderr,"PPID %d\n",crp->vset[PPID]->numval);
fprintf(stderr,"PGRP %d\n",crp->vset[PGRP]->numval);
fprintf(stderr,"SESSION %d\n",crp->vset[SESSION]->numval);
fprintf(stderr,"PSARGS %d\n",crp->vset[PSARGS]->numval);
PID 329 <--- extra bogus entry?
CMD 328
UID_NM 328
PPID 328
PGRP 328
SESSION 328
PSARGS 329 <-- extra bogus entry?
Looking at what the extra bogus entry is
i = 0;
fprintf(stderr,"%d\n",crp->vset[PID]->numval);
pmExtractValue(crp->vset[PID]->valfmt,
&crp->vset[PID]->vlist[i],
desclist[PID].type, &atom, PM_TYPE_64);
pinfo[i].pid = atom.ull;
fprintf(stderr,"pid %d\n",pinfo[i].pid);
pmExtractValue(crp->vset[PSARGS]->valfmt,
&crp->vset[PSARGS]->vlist[i],
desclist[PSARGS].type, &atom, PM_TYPE_STRING);
strncpy(pinfo[i].psargs,atom.cp,127);
fprintf(stderr,"psargs %s\n",pinfo[i].psargs);
pid 0 <--- there is no pid 0
psargs <exiting>
I've downloaded the latest pcp 2.7.4 and this is running on a SLES10SP1
box. I haven't tried downgrading pcp yet.
|