Changeset: b47f27d65058 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b47f27d65058
Modified Files:
monetdb5/mal/Tests/performanceTests/performanceLog
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_runtime.h
Branch: default
Log Message:
Removal of old performance tracing properties.
diffs (261 lines):
diff --git a/monetdb5/mal/Tests/performanceTests/performanceLog
b/monetdb5/mal/Tests/performanceTests/performanceLog
--- a/monetdb5/mal/Tests/performanceTests/performanceLog
+++ b/monetdb5/mal/Tests/performanceTests/performanceLog
@@ -1216,3 +1216,18 @@ tst400e 0.613/0.524/0.013
tst901a 1.315/0.651/0.595
tst901b 1.313/1.222/0.016
+======================== 20 mar 2013 ===================
+Vienna Fedora 18
+Default release
+The compilation mode for is --enable-optimize --disable-debug
+compilation took ?
+command: time mserver5 TST </dev/null >/dev/null
+base 0.212/0.046/0.016.
+tst400a 0.211/0.079/0.014
+tst400bHuge 0.263/0.109/0.020
+tst400cHuge 0.264/0.120/0.023
+tst400d 0.511/0.319/0.020
+tst400e 0.613/0.470/0.012
+
+tst901a 0.655/0.409/0.038
+tst901b 1.417/1.100/0.038
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -496,13 +496,10 @@ str runMALsequence(Client cntxt, MalBlkP
ValPtr backup;
int garbages[16], *garbage;
int stkpc = 0;
- //MT_Lock *lock = NULL;
- //int tid = 0;
RuntimeProfileRecord runtimeProfile, runtimeProfileFunction;
if (stk == NULL)
throw(MAL, "mal.interpreter", MAL_STACK_FAIL);
- runtimeProfileInit(cntxt, mb, stk, &runtimeProfile);
/* prepare extended backup and garbage structures */
if ( mb->maxarg > 16 ){
@@ -516,9 +513,9 @@ str runMALsequence(Client cntxt, MalBlkP
/* also produce event record for start of function */
if ( startpc == 1 ){
- runtimeProfileInit(cntxt, mb, stk, &runtimeProfileFunction);
+ runtimeProfileInit(cntxt, mb, stk);
runtimeProfileBegin(cntxt, mb, stk, 0, &runtimeProfileFunction,
1);
- }
+ }
stkpc = startpc;
exceptionVar = -1;
@@ -700,12 +697,10 @@ str runMALsequence(Client cntxt, MalBlkP
if (getInstrPtr(mb, 0)->token == FACTORYsymbol)
ret = shutdownFactory(cntxt, mb);
runtimeProfileExit(cntxt, mb, stk, pci,
&runtimeProfile);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfile);
runtimeProfileExit(cntxt, mb, stk,
getInstrPtr(mb,0), &runtimeProfileFunction);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfileFunction);
+ runtimeProfileFinish(cntxt, mb);
if (pcicaller && garbageControl(getInstrPtr(mb,
0)))
garbageCollector(cntxt, mb, stk, TRUE);
- runtimeProfile.ppc = 0; /* also finalize
function call event */
if (cntxt->qtimeout && time(NULL) -
stk->clock.tv_usec > cntxt->qtimeout){
ret= createException(MAL,
"mal.interpreter", RUNTIME_QRY_TIMEOUT);
break;
@@ -732,7 +727,6 @@ str runMALsequence(Client cntxt, MalBlkP
/* monitoring information should reflect the input
arguments,
which may be removed by garbage collection */
runtimeProfileExit(cntxt, mb, stk, pci,
&runtimeProfile);
- //runtimeTiming(cntxt, mb, stk, pci, tid, lock,
&runtimeProfile);
/* check for strong debugging after each MAL statement
*/
if ( pci->token != FACcall && ret== MAL_SUCCEED) {
if (GDKdebug & (CHECKMASK|PROPMASK) &&
exceptionVar < 0) {
@@ -856,7 +850,7 @@ str runMALsequence(Client cntxt, MalBlkP
/* unknown exceptions lead to propagation */
if (exceptionVar == -1) {
runtimeProfileExit(cntxt, mb, stk, pci,
&runtimeProfile);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfile);
+ runtimeProfileFinish(cntxt, mb);
if (cntxt->qtimeout && time(NULL) -
stk->clock.tv_usec > cntxt->qtimeout)
ret= createException(MAL,
"mal.interpreter", RUNTIME_QRY_TIMEOUT);
stkpc = mb->stop;
@@ -1083,9 +1077,9 @@ str runMALsequence(Client cntxt, MalBlkP
}
}
if (stkpc == mb->stop) {
- runtimeProfile.ppc = 0; /* also finalize
function call event */
runtimeProfileExit(cntxt, mb, stk, pci,
&runtimeProfile);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfile);
+ runtimeProfileExit(cntxt, mb, stk,
getInstrPtr(mb,0), &runtimeProfileFunction);
+ runtimeProfileFinish(cntxt, mb);
break;
}
if (stkpc == mb->stop)
@@ -1118,9 +1112,8 @@ str runMALsequence(Client cntxt, MalBlkP
garbageCollector(cntxt, mb,
stk, TRUE);
/* reset the clock */
runtimeProfileExit(cntxt, mb, stk, pp,
&runtimeProfile);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfile);
runtimeProfileExit(cntxt, mb, stk,
getInstrPtr(mb,0), &runtimeProfileFunction);
- runtimeProfileFinish(cntxt, mb,
&runtimeProfileFunction);
+ runtimeProfileFinish(cntxt, mb);
}
}
stkpc = mb->stop;
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
@@ -58,11 +58,14 @@ static str isaSQLquery(MalBlkPtr mb){
* Manage the runtime profiling information
*/
void
-runtimeProfileInit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, RuntimeProfile
prof)
+runtimeProfileInit(Client cntxt, MalBlkPtr mb, MalStkPtr stk)
{
int i;
str q;
+ if (malProfileMode)
+ setFilterOnBlock(mb, 0, 0);
+
MT_lock_set(&mal_delayLock, "sysmon");
if ( QRYqueue == 0)
QRYqueue = (QueryQueue) GDKzalloc( sizeof (struct QRYQUEUE) *
(qsize= 256));
@@ -75,12 +78,6 @@ runtimeProfileInit(Client cntxt, MalBlkP
if ( mb->tag == 0)
mb->tag = OIDnew(1);
- prof->newclk = 0;
- prof->ppc = -2;
- prof->tcs = 0;
- prof->inblock = 0;
- prof->oublock = 0;
-
if ( i == qtop ) {
QRYqueue[i].mb = mb; // for detecting duplicates
QRYqueue[i].stk = stk; // for status pause 'p'/running '0'/
quiting 'q'
@@ -92,25 +89,17 @@ runtimeProfileInit(Client cntxt, MalBlkP
QRYqueue[i].status = "running";
QRYqueue[i].cntxt = cntxt;
}
- prof->memory = MT_mallinfo();
- if (malProfileMode) {
- setFilterOnBlock(mb, 0, 0);
- prof->ppc = -1;
- }
qtop += i == qtop;
MT_lock_unset(&mal_delayLock, "sysmon");
-
}
void
-runtimeProfileFinish(Client cntxt, MalBlkPtr mb, RuntimeProfile prof)
+runtimeProfileFinish(Client cntxt, MalBlkPtr mb)
{
int i,j;
(void) cntxt;
- (void) prof;
-
MT_lock_set(&mal_delayLock, "sysmon");
for( i=j=0; i< qtop; i++)
@@ -141,25 +130,23 @@ runtimeProfileBegin(Client cntxt, MalBlk
if (malProfileMode == 0)
return; /* mostly true */
- if (stk && mb->profiler != NULL) {
+ if (stk && mb->profiler != NULL && mb->profiler[stkpc].trace) {
prof->newclk = stk->clk = GDKusec();
- if (mb->profiler[stkpc].trace) {
- MT_lock_set(&mal_delayLock, "sysmon");
- gettimeofday(&stk->clock, NULL);
- prof->ppc = stkpc;
- mb->profiler[stkpc].clk = 0;
- mb->profiler[stkpc].ticks = 0;
- mb->profiler[stkpc].clock = stk->clock;
- /* emit the instruction upon start as well */
- if (malProfileMode)
- profilerEvent(cntxt->idx, mb, stk, stkpc,
start);
+ prof->stkpc = stkpc;
+ MT_lock_set(&mal_delayLock, "sysmon");
+ gettimeofday(&stk->clock, NULL);
+ mb->profiler[stkpc].clk = 0;
+ mb->profiler[stkpc].ticks = 0;
+ mb->profiler[stkpc].clock = stk->clock;
+ /* emit the instruction upon start as well */
+ if (malProfileMode)
+ profilerEvent(cntxt->idx, mb, stk, stkpc, start);
#ifdef HAVE_TIMES
- times(&stk->timer);
- mb->profiler[stkpc].timer = stk->timer;
+ times(&stk->timer);
+ mb->profiler[stkpc].timer = stk->timer;
#endif
- mb->profiler[stkpc].clk = stk->clk;
- MT_lock_unset(&mal_delayLock, "sysmon");
- }
+ mb->profiler[stkpc].clk = stk->clk;
+ MT_lock_unset(&mal_delayLock, "sysmon");
}
}
@@ -167,7 +154,7 @@ runtimeProfileBegin(Client cntxt, MalBlk
void
runtimeProfileExit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci,
RuntimeProfile prof)
{
- int i,j,fnd, stkpc = prof->ppc;
+ int i,j,fnd, stkpc = prof->stkpc;
if (cntxt->flags & footprintFlag && pci){
for (i = 0; i < pci->retc; i++)
@@ -184,7 +171,8 @@ runtimeProfileExit(Client cntxt, MalBlkP
if (malProfileMode == 0)
return; /* mostly true */
- if (stk != NULL && prof->ppc >= 0 && mb->profiler != NULL &&
mb->profiler[stkpc].trace && mb->profiler[stkpc].clk)
+
+ if (stk != NULL && prof->stkpc >= 0 && mb->profiler != NULL &&
mb->profiler[stkpc].trace && mb->profiler[stkpc].clk)
{
MT_lock_set(&mal_contextLock, "sysmon");
gettimeofday(&mb->profiler[stkpc].clock, NULL);
@@ -197,7 +185,6 @@ runtimeProfileExit(Client cntxt, MalBlkP
mb->profiler[stkpc].wbytes = getVolume(stk, pci, 1);
}
profilerEvent(cntxt->idx, mb, stk, stkpc, 0);
- prof->ppc = -1;
MT_lock_unset(&mal_contextLock, "sysmon");
}
}
diff --git a/monetdb5/mal/mal_runtime.h b/monetdb5/mal/mal_runtime.h
--- a/monetdb5/mal/mal_runtime.h
+++ b/monetdb5/mal/mal_runtime.h
@@ -26,13 +26,11 @@
/* During MAL interpretation we collect performance event data.
* Their management is orchestrated from here.
+ * We need to maintain some state from ProfileBegin
*/
typedef struct{
lng newclk;
- int ppc;
- lng tcs;
- lng oublock, inblock;
- struct Mallinfo memory;
+ int stkpc;
} *RuntimeProfile, RuntimeProfileRecord;
/* The actual running queries are assembled in a queue
@@ -49,8 +47,8 @@ typedef struct QRYQUEUE{
lng runtime;
} *QueryQueue;
-mal_export void runtimeProfileInit(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
RuntimeProfile prof);
-mal_export void runtimeProfileFinish(Client cntxt, MalBlkPtr mb,
RuntimeProfile prof);
+mal_export void runtimeProfileInit(Client cntxt, MalBlkPtr mb, MalStkPtr stk);
+mal_export void runtimeProfileFinish(Client cntxt, MalBlkPtr mb);
mal_export void runtimeProfileBegin(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
int stkpc, RuntimeProfile prof, int start);
mal_export void runtimeProfileExit(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci, RuntimeProfile prof);
mal_export lng getVolume(MalStkPtr stk, InstrPtr pci, int rd);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list