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