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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list