From: hadaq Date: Wed, 27 Feb 2002 12:53:19 +0000 (+0000) Subject: More verbose output for evtbuild X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=a021af30990fd3bdb87de46dd8b48d2530d5f6f8;p=daqdata.git More verbose output for evtbuild --- diff --git a/hadaq/evtbuild.c b/hadaq/evtbuild.c index 821abb6..7921e3a 100644 --- a/hadaq/evtbuild.c +++ b/hadaq/evtbuild.c @@ -1,4 +1,4 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.36 2001-12-01 22:03:31 hadaq Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.37 2002-02-27 12:53:19 hadaq Exp $"; #define _POSIX_C_SOURCE 199506L @@ -53,6 +53,14 @@ typedef struct TheArgsS { char verbosity[PARAM_MAX_VALUE_LEN]; } TheArgs; +typedef struct TheStatsS { + unsigned long *evtsDiscarded; + unsigned long *evtsComplete; + unsigned long *bytesWritten; + unsigned long *triggerType[NTRIGTYPES]; + unsigned long *trigNr[32]; +} TheStats; + static jmp_buf terminateJmp; void sigHandler(int sig) @@ -222,6 +230,86 @@ static int argsFromParam(TheArgs *my, int argc, char *argv[]) { desParam(param); } +static char *unit(unsigned long v) { + static char retVal[6]; + static char u[] = " kM"; + int i; + + for (i = 0; v >= 10000 && i < sizeof(u) - 2; v /= 1000, i++) { + } + sprintf(retVal, "%4d%c", v, u[i]); + + return retVal; +} + +static void statsDump(TheArgs *theArgs, TheStats *my, int interval) { + static unsigned long lastEC; + static unsigned long lastED; + static unsigned long lastBW; + static time_t lastTime = 0; + time_t dT = time(NULL) - lastTime; + int i; + + + if (theArgs->isStandalone && dT >= interval) { + int col = 0; + int row = 0; + + printf("%19s:%6s", "evtsComplete ", unit(*my->evtsComplete)); + printf("%19s:%6s", "evtsDiscarded ", unit(*my->evtsDiscarded)); + printf("%19s:%6s", "bytesWritten ", unit(*my->bytesWritten)); + putchar('\n'); + row++; + + + printf("%19s:%6s", "evtsComplete/s", unit(*my->evtsComplete - lastEC)); + printf("%19s:%6s", "evtsDiscarded/s", unit(*my->evtsDiscarded) - lastED); + printf("%19s:%6s", "bytesWritten/s", unit(*my->bytesWritten - lastBW)); + putchar('\n'); + row++; + lastEC = *my->evtsComplete; + lastED = *my->evtsDiscarded; + lastBW = *my->bytesWritten; + + col = 0; + for (i = 0; i < NTRIGTYPES; i++) { + if (*my->triggerType[i] != 0) { + printf("%17s%02d:%6s", "triggerType", i, unit(*my->triggerType[i])); + if (++col == 3) { + putchar('\n'); + row++; + col = 0; + } + } + } + if (col != 0) { + putchar('\n'); + row++; + } + col = 0; + + for (i = 0; i < theArgs->nrOfMsgs; i++) { + printf("%12s%02d: 0x%08x", "trigNr", i, *my->trigNr[i]); + if (++col == 3) { + putchar('\n'); + row++; + col = 0; + } + } + if (col != 0) { + putchar('\n'); + row++; + } + while(row < 23) { + putchar('\n'); + row++; + } + + + lastTime += dT; + } +} + static void storeInfoStart(const char *n, time_t t, TheArgs *my) { Param pS, *p = &pS; @@ -273,6 +361,7 @@ int main(int argc, char *argv[]) { int i; TheArgs theArgsS, *theArgs = &theArgsS; + TheStats theStatsS, *theStats = &theStatsS; ShmTrans **shmTrans; HadTuQueue **hadTuQueue; Worker *worker; @@ -286,10 +375,6 @@ int main(int argc, char *argv[]) uint32_t currTrigNr; uint32_t currId; - unsigned long *evtsDiscarded; - unsigned long *evtsComplete; - unsigned long *bytesWritten; - ourTime = time(NULL); openlog(argv[0], LOG_PID|LOG_PERROR, LOG_LOCAL0); @@ -393,9 +478,21 @@ int main(int argc, char *argv[]) } } - evtsDiscarded = Worker_addStatistic(worker, "evtsDiscarded"); - evtsComplete = Worker_addStatistic(worker, "evtsComplete"); - bytesWritten = Worker_addStatistic(worker, "bytesWritten"); + theStats->evtsDiscarded = Worker_addStatistic(worker, "evtsDiscarded"); + theStats->evtsComplete = Worker_addStatistic(worker, "evtsComplete"); + theStats->bytesWritten = Worker_addStatistic(worker, "bytesWritten"); + for (i = 0; i < NTRIGTYPES; i++) { + char buf[WORKER_MAX_NAME_LEN]; + + sprintf(buf, "triggerType%d", i); + theStats->triggerType[i] = Worker_addStatistic(worker, buf); + } + for (i = 0; i < theArgs->nrOfMsgs; i++) { + char buf[WORKER_MAX_NAME_LEN]; + + sprintf(buf, "trigNr%d", i); + theStats->trigNr[i] = Worker_addStatistic(worker, buf); + } argsDump(theArgs); storeInfoStart(argv[0], ourTime, theArgs); @@ -418,10 +515,7 @@ int main(int argc, char *argv[]) int step; int evtIsBroken = 0; - Worker_dump(worker, 1); -#ifndef NDEBUG - syslog(LOG_DEBUG, "evtsComplete: %d, evtsDiscarded %d", *evtsComplete, *evtsDiscarded); -#endif + statsDump(theArgs, theStats, 1); evt = newEvt(EvtDecoding_64bitAligned, EvtId_data, theArgs->runNr, theArgs->expId); for (i = 0; i < theArgs->nrOfMsgs && !evtIsBroken; i += step) { if (theArgs->skipMsgs[currId] & (1 << i)) { @@ -436,13 +530,19 @@ int main(int argc, char *argv[]) } subEvt = HadTuQueue_front(hadTuQueue[i]); #ifndef NDEBUG - syslog(LOG_DEBUG, "hadTuQueue[%d]: %p = subEvt: %s", i, subEvt, SubEvt_2charP(subEvt)); + syslog(LOG_DEBUG, + "hadTuQueue[%d]: %p = subEvt: %s", + i, subEvt, SubEvt_2charP(subEvt)); #endif + + (*theStats->trigNr[i]) = SubEvt_trigNr(subEvt); + if (i == 0) { currTrigNr = SubEvt_trigNr(subEvt); currId = SubEvt_id(subEvt); #ifndef NDEBUG - syslog(LOG_DEBUG, "currTrigNr: 0x%08x, currId 0x%08x", currTrigNr, currId); + syslog(LOG_DEBUG, + "currTrigNr: 0x%08x, currId 0x%08x", currTrigNr, currId); #endif } if (SubEvt_trigNr(subEvt) == currTrigNr) { @@ -471,14 +571,15 @@ int main(int argc, char *argv[]) writeAnsiTape(outTape, evt, Evt_paddedSize(evt)); } Evt_online(evt); - (*evtsComplete)++; - (*bytesWritten) += Evt_size(evt); + (*theStats->evtsComplete)++; + (*theStats->triggerType[currId])++; + (*theStats->bytesWritten) += Evt_size(evt); } else { - (*evtsDiscarded)++; + (*theStats->evtsDiscarded)++; } deleteEvt(evt); } - Worker_dump(worker, 0); + statsDump(theArgs, theStats, 0); ourTime = time(NULL); storeInfoStop(argv[0], ourTime, worker); diff --git a/hadaq/worker.h b/hadaq/worker.h index d71a41e..b1ce58b 100644 --- a/hadaq/worker.h +++ b/hadaq/worker.h @@ -7,9 +7,10 @@ #include "psxshm.h" #define WORKER_MAX_NUM_STATS 80 +#define WORKER_MAX_NAME_LEN 32 typedef struct StatisticS { - char name[256]; + char name[WORKER_MAX_NAME_LEN]; unsigned long value; } Statistic;