Changeset: 7fff4453df14 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7fff4453df14
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/stethoscope.c
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/profiler.h
        monetdb5/modules/mal/profiler.mal
Branch: profiler
Log Message:

Remove serverside profiler pool
- profiler pool not needed for MPM
- use TCP stream instead of UDP


diffs (255 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1095,7 +1095,6 @@ str CMDscience_bat_flt_sqrt(bat *ret, co
 str CMDscience_bat_flt_tan(bat *ret, const bat *bid);
 str CMDscience_bat_flt_tanh(bat *ret, const bat *bid);
 str CMDsetHeartbeat(void *res, int *ev);
-str CMDsetProfilerPoolSize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str CMDsetoid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDstartProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDstopProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -323,6 +323,8 @@ main(int argc, char **argv)
        conn = mapi_get_from(dbh);
        while ((n = mnstr_read(conn, buffer + len, 1, buflen - len-1)) >= 0) {
                buffer[len + n] = 0;
+               if(debug)
+                       printf("%s",buffer);
                if( trace) 
                        fprintf(trace,"%s",buffer);
                response = buffer;
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -49,71 +49,6 @@ static struct{
 //static MT_Lock mal_beatLock MT_LOCK_INITIALIZER("beatLock");
 //#endif
 
-/*
- * Profiler trace cache
- * The trace information for a limited collection of queries is retained in 
- * a profiler cache, located in the database directory profiler_logs.
- * It can be used for post-mortem analysis. It actually should be a 
profiler_vault.
- *
- * The cache file name is simply derived from the MAL block invocation tag,
- * which is assured to be unique.
- * 
- * The JSON structures are also sent to the single stream upon request.
- *
- * The old profiler cache structures are removed when you
- * start of the profiler.
- */
-
-#define MAXJSONEVENTS (1000000) /* cut off large JSON traces */
-#define DEFAULTPOOLSIZE 10
-
-typedef struct {
-       int tag;
-       int cnt;        // number of events in this bucket
-       lng start,finish;
-       char fname[BUFSIZ];
-       stream *trace;
-} ProfilerRecord;
-
-ProfilerRecord *profilerPool;
-static int poolSize= DEFAULTPOOLSIZE;
-
-static void
-clearPool(void)
-{      int i;
-       
-       // remove old profiler traces
-       if( profilerPool )
-       for( i = 0; i < poolSize; i++){
-               if ( profilerPool[i].trace)
-                       close_stream(profilerPool[i].trace);
-               if( profilerPool[i].fname[0])
-               (void) unlink(profilerPool[i].fname);
-       }
-}
-
-// setting the poolsize re-initializes the pool
-str 
-setprofilerpoolsize(int size)
-{
-       if( size < 1)
-               throw(MAL,"profiler.setPool", "invalid pool size");
-       MT_lock_set(&mal_profileLock, "profilerpool");
-       // Always cleanout the past before you set the new pool size
-       if (profilerPool){
-               clearPool();
-               poolSize = 0;
-               GDKfree(profilerPool);
-               profilerPool = 0;
-       }
-       profilerPool = GDKzalloc(size * sizeof(ProfilerRecord));
-       MT_lock_unset(&mal_profileLock, "profilerpool");
-       if( profilerPool == 0)
-               throw(MAL,"profiler.setPool", MAL_MALLOC_FAIL);
-       poolSize = size;
-       return MAL_SUCCEED;
-}
-
 #define LOGLEN 8192
 #define lognew()  loglen = 0; logbase = logbuffer; *logbase = 0;
 
@@ -125,20 +60,21 @@ setprofilerpoolsize(int size)
 
 
 // The heart beat events should be sent to all outstanding channels.
-static void logjsonInternal(int k, char *logbuffer, InstrPtr p)
+static void logjsonInternal(char *logbuffer)
 {      
        char buf[BUFSIZ], *s;
        size_t len, lenhdr;
 
-       snprintf(buf,BUFSIZ,"%d",eventcounter);
        s = strchr(logbuffer,(int) ':');
        if( s == NULL){
                return;
        }
-       strncpy(s+1, buf,strlen(buf));
        len = strlen(logbuffer);
 
        MT_lock_set(&mal_profileLock, "logjson");
+       snprintf(buf,BUFSIZ,"%d",eventcounter);
+       strncpy(s+1, buf,strlen(buf));
+
        if (eventstream) {
        // upon request the log record is sent over the profile stream
                if( eventcounter == 0){
@@ -149,59 +85,10 @@ static void logjsonInternal(int k, char 
                (void) mnstr_write(eventstream, logbuffer, 1, len);
                (void) mnstr_flush(eventstream);
        }
-
-       // all queries are assembled in a performance trace pool
-       if( profilerPool){
-               if( profilerPool[k].trace == NULL){
-                       if( profilerPool[k].fname[0]== 0)
-                               (void) mkdir("profiler_logs", 0755);
-                       if( profilerPool[k].fname[0]== 0)
-                               snprintf(profilerPool[k].fname, 
BUFSIZ,"profiler_logs/%d.json",k);
-                       
-                       profilerPool[k].trace = 
open_wastream(profilerPool[k].fname);
-                       if( profilerPool[k].trace == NULL){
-                               GDKerror("could not create profiler file");
-                               MT_lock_unset(&mal_profileLock, "logjson");
-                               return;
-                       }
-                       profilerPool[k].start = GDKusec();
-                       snprintf(buf,BUFSIZ,"%s\n",monetdb_characteristics);
-                       (void) mnstr_write(profilerPool[k].trace, buf, 1, 
strlen(buf));
-               }
-               if( profilerPool[k].trace){
-                       (void) 
mnstr_write(profilerPool[k].trace,logbuffer,1,len);
-                       (void) mnstr_flush(profilerPool[k].trace);
-               }
-               if ( profilerPool[k].trace && (( p && p->barrier == ENDsymbol 
&& strstr(logbuffer,"done")) || profilerPool[k].cnt > MAXJSONEVENTS) ){
-                       (void) mnstr_flush(profilerPool[k].trace);
-                       (void) close_stream(profilerPool[k].trace);
-                       profilerPool[k].cnt = 0;
-                       profilerPool[k].trace = NULL;
-                       profilerPool[k].finish = GDKusec();
-               }
-       }
        eventcounter++;
        MT_lock_unset(&mal_profileLock, "logjson");
 }
 
-static void logjson(MalBlkPtr mb, MalStkPtr stk, InstrPtr p, char *logbuffer)
-{      
-       int i,k;        
-
-       (void) mb;
-       if (stk){
-               logjsonInternal( k = stk->tag % poolSize, logbuffer,p);
-               if (profilerPool)
-                       profilerPool[k].tag = stk->tag;
-       } else if (profilerPool) {
-// The heart beat events should be sent to all outstanding channels.
-// But only once to the stream
-               for(i=0; i< poolSize; i++)
-                       if (profilerPool[i].trace)
-                               logjsonInternal( i, logbuffer, 0);
-       }
-}
-
 /* JSON rendering method of performance data. 
  * The eventparser may assume this layout for ease of parsing
 EXAMPLE:
@@ -403,7 +290,7 @@ renderProfilerEvent(MalBlkPtr mb, MalStk
 #endif
        }
        logadd("}\n"); // end marker
-       logjson(mb,stk,pci,logbuffer);
+       logjsonInternal(logbuffer);
 }
 
 static int
@@ -521,7 +408,7 @@ profilerHeartbeatEvent(char *alter)
        logadd("\"state\":\"%s\",\n",alter);
        logadd("\"cpuload\":\"%s\",\n",cpuload);
        logadd("}\n"); // end marker
-       logjson(0,0,0,logbuffer);
+       logjsonInternal(logbuffer);
 }
 
 void
@@ -563,7 +450,6 @@ openProfilerStream(stream *fd, int mode)
        }
        if( eventstream)
                closeProfilerStream();
-       setprofilerpoolsize(poolSize);
        malProfileMode = -1;
        eventstream = fd;
        /* show all in progress instructions for stethoscope startup */
diff --git a/monetdb5/modules/mal/profiler.c b/monetdb5/modules/mal/profiler.c
--- a/monetdb5/modules/mal/profiler.c
+++ b/monetdb5/modules/mal/profiler.c
@@ -52,17 +52,6 @@ CMDcloseProfilerStream(void *res)
        return closeProfilerStream();
 }
 
-str
-CMDsetProfilerPoolSize (Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci)
-{
-       int poolsize = *getArgReference_int(stk,pci,1);
-       (void) mb;              /* fool compiler */
-       (void) cntxt;
-       if( poolsize < 0)
-               throw(MAL,"profiler","Trace pool size should be positive");
-       return setprofilerpoolsize(poolsize);
-}
-
 // initialize SQL tracing
 str
 CMDstartProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc)
diff --git a/monetdb5/modules/mal/profiler.h b/monetdb5/modules/mal/profiler.h
--- a/monetdb5/modules/mal/profiler.h
+++ b/monetdb5/modules/mal/profiler.h
@@ -42,7 +42,6 @@ profiler_export str CMDstartProfiler(Cli
 profiler_export str CMDstopProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 profiler_export str CMDnoopProfiler(void *res);
 profiler_export str CMDsetHeartbeat(void *res, int *ev);
-profiler_export str CMDsetProfilerPoolSize(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 profiler_export str CMDopenProfilerStream(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 profiler_export str CMDcloseProfilerStream(void *res);
 profiler_export str CMDcleanup(void *ret);
diff --git a/monetdb5/modules/mal/profiler.mal 
b/monetdb5/modules/mal/profiler.mal
--- a/monetdb5/modules/mal/profiler.mal
+++ b/monetdb5/modules/mal/profiler.mal
@@ -14,10 +14,6 @@ pattern stop():void
 address CMDstopProfiler
 comment "Stop offline performance profiling";
 
-pattern setpoolsize(pool:int)
-address CMDsetProfilerPoolSize
-comment "Re-initialize the profiler pool";
-
 command setheartbeat(b:int):void
 address CMDsetHeartbeat
 comment "Set heart beat performance tracing";
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to