Changeset: 959b58aa4623 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=959b58aa4623
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_join.c
        gdk/gdk_search.c
        monetdb5/mal/mal.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_profiler.h
        monetdb5/mal/mal_runtime.c
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/profiler.h
        monetdb5/modules/mal/profiler.mal
Branch: default
Log Message:

merged with jul2015


diffs (243 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
@@ -1188,11 +1188,11 @@ str CMDsetProfilerStream(Client cntxt, M
 str CMDsetoid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDstartStethoscope(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str CMDstartTomograph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-str CMDstethoscope(void *ret, int *beat);
+str CMDstethoscope(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDstopProfiler(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDstr2qgrams(bat *ret, str *val);
 str CMDstrlength(int *ret, str *v);
-str CMDtomograph(void *ret, int *beat);
+str CMDtomograph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDvarABS(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDvarADD(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDvarADDsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -2534,7 +2534,7 @@ str printRef;
 void printSignature(stream *fd, Symbol s, int flg);
 void printStack(stream *f, MalBlkPtr mb, MalStkPtr s);
 str prodRef;
-void profilerEvent(int idx, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int 
start);
+void profilerEvent(oid usr, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int 
start);
 void profilerGetCPUStat(lng *user, lng *nice, lng *sys, lng *idle, lng 
*iowait);
 void profilerHeartbeatEvent(char *msg);
 str profilerRef;
@@ -2670,7 +2670,7 @@ int sqlblob_tostr(str *tostr, int *l, co
 int sqlfunctionProp;
 str srvpoolRef;
 int stableProp;
-str startProfiler(int mode, int beat);
+str startProfiler(oid user, int mode, int beat);
 str startRef;
 str stopProfiler(void);
 str stopRef;
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2920,8 +2920,8 @@ BATsubjoin(BAT **r1p, BAT **r2p, BAT *l,
        swap = 0;
 
        /* some statistics to help us decide */
-       lsize = (BUN) (BATcount(l) * (Tsize(l) + (l->T->vheap ? 
l->T->vheap->size : 0) + 2 * sizeof(BUN)));
-       rsize = (BUN) (BATcount(r) * (Tsize(r) + (r->T->vheap ? 
r->T->vheap->size : 0) + 2 * sizeof(BUN)));
+       lsize = (BUN) (BATcount(l) * (Tsize(l)) + (l->T->vheap ? 
l->T->vheap->size : 0) + 2 * sizeof(BUN));
+       rsize = (BUN) (BATcount(r) * (Tsize(r)) + (r->T->vheap ? 
r->T->vheap->size : 0) + 2 * sizeof(BUN));
        mem_size = GDK_mem_maxsize / (GDKnr_threads ? GDKnr_threads : 1);
 
        lparent = VIEWtparent(l);
diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c
--- a/gdk/gdk_search.c
+++ b/gdk/gdk_search.c
@@ -237,6 +237,8 @@ BATcheckhash(BAT *b)
        t = GDKusec();
        MT_lock_set(&GDKhashLock(abs(b->batCacheid)), "BATcheckhash");
        t = GDKusec() - t;
+// use or ignore a persistent hash
+#ifdef PERSISTENTHASH
        if (b->T->hash == NULL) {
                Hash *h;
                Heap *hp;
@@ -298,6 +300,7 @@ BATcheckhash(BAT *b)
                }
                GDKfree(hp);
        }
+#endif
        ret = b->T->hash != NULL;
        MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "BATcheckhash");
        ALGODEBUG if (ret) fprintf(stderr, "#BATcheckhash: already has hash %d, 
waited " LLFMT " usec\n", b->batCacheid, t);
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -98,7 +98,7 @@ int mal_init(void){
        /* Use the same shortcuts as stethoscope */
        if ( mal_trace ) {
                openProfilerStream(mal_clients[0].fdout);
-               startProfiler(1,0);
+               startProfiler(mal_clients[0].user,1,0);
        } 
        return 0;
 }
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
@@ -26,6 +26,7 @@ stream *eventstream = 0;
 static int offlineProfiling = FALSE;
 static int cachedProfiling = FALSE;
 static str myname = 0;
+static oid user = 0;
 
 static void offlineProfilerEvent(MalBlkPtr mb, MalStkPtr stk, InstrPtr pc, int 
start, char *alter, char *msg);
 static void cachedProfilerEvent(MalBlkPtr mb, MalStkPtr stk, InstrPtr pc);
@@ -118,9 +119,9 @@ static void logsend(char *logbuffer)
  * Note that the profiler itself should lead to event generations.
  */
 void
-profilerEvent(int idx, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int start)
+profilerEvent(oid usr, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int start)
 {
-       (void) idx;
+       if( usr != user) return; // only trace your own commands
        if (stk == NULL) return;
        if (pci == NULL) return;
        if (getModuleId(pci) == myname) // ignore profiler commands from 
monitoring
@@ -338,10 +339,11 @@ closeProfilerStream(void)
 static int TRACE_init = 0;
 
 str
-startProfiler(int mode, int beat)
+startProfiler(oid usr, int mode, int beat)
 {
        Client c;
        int i,j;
+       
 
 #ifdef HAVE_SYS_RESOURCE_H
        getrusage(RUSAGE_SELF, &infoUsage);
@@ -361,6 +363,7 @@ startProfiler(int mode, int beat)
        malProfileMode = mode;
        eventcounter = 0;
        setHeartbeat(beat); 
+       user = usr;
        MT_lock_unset(&mal_profileLock, "startProfiler");
 
        /* show all in progress instructions for stethoscope startup */
@@ -387,6 +390,7 @@ stopProfiler(void)
        cachedProfiling = FALSE;
        setHeartbeat(0); // stop heartbeat
        closeProfilerStream();
+       user = 0;
        MT_lock_unset(&mal_profileLock, "stopProfiler");
        return MAL_SUCCEED;
 }
diff --git a/monetdb5/mal/mal_profiler.h b/monetdb5/mal/mal_profiler.h
--- a/monetdb5/mal/mal_profiler.h
+++ b/monetdb5/mal/mal_profiler.h
@@ -51,7 +51,7 @@ mal_export int getProfileCounter(int idx
 mal_export str openProfilerStream(stream *fd);
 mal_export str closeProfilerStream(void);
 
-mal_export void profilerEvent(int idx, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci, int start);
+mal_export void profilerEvent(oid usr, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci, int start);
 mal_export void profilerHeartbeatEvent(char *msg);
 mal_export str setLogFile(stream *fd, Module cntxt, const char *fname);
 mal_export str setLogStream(Module cntxt, const char *host, int port);
@@ -59,7 +59,7 @@ mal_export str setLogStreamStream(Module
 mal_export str setStartPoint(Module cntxt, const char *mod, const char *fcn);
 mal_export str setEndPoint(Module cntxt, const char *mod, const char *fcn);
 
-mal_export str startProfiler(int mode, int beat);
+mal_export str startProfiler(oid user, int mode, int beat);
 mal_export str stopProfiler(void);
 mal_export void setHeartbeat(int delay);
 mal_export str cleanupProfiler(void);
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -172,7 +172,7 @@ runtimeProfileBegin(Client cntxt, MalBlk
        /* emit the instruction upon start as well */
        
        if(malProfileMode > 0)
-               profilerEvent(cntxt->idx, mb, stk, pci, TRUE);
+               profilerEvent(cntxt->user, mb, stk, pci, TRUE);
 }
 
 void
@@ -198,7 +198,7 @@ runtimeProfileExit(Client cntxt, MalBlkP
                pci->wbytes += getVolume(stk, pci, 1);
                if (pci->recycle)
                        pci->rbytes += getVolume(stk, pci, 0);
-               profilerEvent(cntxt->idx, mb, stk, pci, FALSE);
+               profilerEvent(cntxt->user, mb, stk, pci, FALSE);
        }
        if( malProfileMode < 0){
                /* delay profiling until you encounter start of MAL function */
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
@@ -159,22 +159,25 @@ CMDgetSystemTime(lng *ret)
 }
 
 str
-CMDtomograph(void *ret, int *beat)
+CMDtomograph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc)
 {
-       (void) ret;
-       if( *beat < 0)
+       int beat = *getArgReference_int(stk,pc,1);
+       (void) mb;
+       if( beat < 0)
                throw(MAL,"profiler.tomograph","negative heart beat not 
allowed");
-       startProfiler(-1, *beat);
+       startProfiler(cntxt->user, -1, beat);
        return MAL_SUCCEED;
 }
 
 str
-CMDstethoscope(void *ret,int *beat)
+CMDstethoscope(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc)
 {
-       (void) ret;
-       if( *beat < 0)
+       int beat = *getArgReference_int(stk,pc,1);
+
+       (void) mb;
+       if( beat < 0)
                throw(MAL,"profiler.stethoscope","negative heart beat not 
allowed");
-       startProfiler(1, *beat);
+       startProfiler(cntxt->user, 1, beat);
        return MAL_SUCCEED;
 }
 
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
@@ -55,8 +55,8 @@ profiler_export str CMDgetDiskReads(lng 
 profiler_export str CMDgetDiskWrites(lng *ret);
 profiler_export str CMDgetUserTime(lng *ret);
 profiler_export str CMDgetSystemTime(lng *ret);
-profiler_export str CMDstethoscope(void *ret, int *beat);
-profiler_export str CMDtomograph(void *ret, int *beat);
+profiler_export str CMDstethoscope(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+profiler_export str CMDtomograph(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 profiler_export str CMDcpustats(lng *user, lng *nice, lng *sys, lng *idle, lng 
*iowait);
 profiler_export str CMDcpuloadPercentage(int *cycles, int *io, lng *user, lng 
*nice, lng *sys, lng *idle, lng *iowait);
 #endif  /* _PROFILER_*/
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
@@ -6,11 +6,11 @@
 
 module profiler;
 
-command tomograph(b:int)
+pattern tomograph(b:int)
 address CMDtomograph
 comment "Start tomograph profiler with heart beat";
 
-command stethoscope(b:int)
+pattern stethoscope(b:int)
 address CMDstethoscope
 comment "Start stethoscope profiling with heart beat";
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to