Re: [Monetdb-developers] [Monetdb-checkins] MonetDB5/src/mal mal_client.mx, , 1.156, 1.157 mal_scenario.mx, , 1.111, 1.112
Martin Kersten wrote:
Update of /cvsroot/monetdb/MonetDB5/src/mal In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18380/mal
Modified Files: mal_client.mx mal_scenario.mx Log Message: Add a few statistics for tracking client behavior.
Index: mal_client.mx =================================================================== RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_client.mx,v retrieving revision 1.156 retrieving revision 1.157 diff -u -d -r1.156 -r1.157 --- mal_client.mx 30 Aug 2007 07:18:54 -0000 1.156 +++ mal_client.mx 5 Sep 2007 18:13:16 -0000 1.157 @@ -89,6 +89,10 @@ # include
#endif +#ifdef HAVE_SYS_TIMES_H +# include
+#endif + @- The prompt structure is designed to simplify recognition of the language framework for interaction. For direct console @@ -226,6 +230,18 @@ Symbol curprg; /* focus of parser */ Symbol backup; /* save parsing context */ MalStkPtr glb; /* global variable stack */ +@- +Some statistics on client behavior becomes relevant +for server maintenance. The scenario loop is used as +a frame of reference. We measure the elapsed time after +a request has been received and we have to wait for +the next one. +@h + int actions; + lng totaltime; /* sum of elapsed processing times */ +#ifdef HAVE_TIMES + struct tms workload; +#endif } *Client, ClientRec; mal_export ClientRec mal_clients[MAL_MAXCLIENTS+1]; @@ -446,6 +462,9 @@ prompt = !fin? GDKgetenv("monet_prompt"): PROMPT1; c->prompt= GDKstrdup(prompt); c->promptlength= strlen(prompt); + + c->actions =0; + c->totaltime= 0; return c; } @-
Index: mal_scenario.mx =================================================================== RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_scenario.mx,v retrieving revision 1.111 retrieving revision 1.112 diff -u -d -r1.111 -r1.112 --- mal_scenario.mx 30 Aug 2007 07:18:54 -0000 1.111 +++ mal_scenario.mx 5 Sep 2007 18:13:16 -0000 1.112 @@ -183,6 +183,10 @@ #include "mal_authorize.h" #include "mal_exception.h"
+#ifdef HAVE_SYS_TIMES_H +# include
+#endif + struct SCENARIO scenarioRec[MAXSCEN] = { {"mal", "mal", 0, 0, /* hardwired MALinit*/ @@ -576,15 +580,31 @@ runScenarioBody(Client c) { str msg= MAL_SUCCEED; + lng start; + struct tms t0,t1; I think here you need to do like this: #ifdef HAVE_TIMES struct tms t0,t1; #endif
If not the windows compilation does not work. I tried and now it compiles on windows. To checkin I am just waiting for green light because I am not really sure of the impact of my change in your semantics. Regards, Romulo
while (c->mode > FINISHING) { msg = MAL_SUCCEED; @:runPhase(MAL_SCENARIO_READER)@ c->lastcmd= time(0); + start= GDKusec(); +#ifdef HAVE_TIMES + times(&t0); +#endif @:runPhase(MAL_SCENARIO_PARSER)@ @:runPhase(MAL_SCENARIO_OPTIMIZE)@ @:runPhase(MAL_SCENARIO_SCHEDULER)@ @:runPhase(MAL_SCENARIO_ENGINE)@ + start= GDKusec()-start; + c->actions++; + c->totaltime += start; +#ifdef HAVE_TIMES + times(&t1); + c->workload.tms_utime += t1.tms_utime-t0.tms_utime; + c->workload.tms_cutime += t1.tms_cutime-t0.tms_cutime; + c->workload.tms_stime += t1.tms_stime-t0.tms_stime; + c->workload.tms_cstime += t1.tms_cstime-t0.tms_cstime; +#endif } return msg; }
------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Monetdb-checkins mailing list Monetdb-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
participants (1)
-
Romulo Goncalves