Changeset: 33a1b7bfcb28 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=33a1b7bfcb28 Modified Files: monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_resource.c monetdb5/mal/mal_resource.h Branch: Feb2013 Log Message:
Make MALresource independent of cntxt and mb diffs (87 lines): diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c --- a/monetdb5/mal/mal_dataflow.c +++ b/monetdb5/mal/mal_dataflow.c @@ -328,13 +328,13 @@ DFLOWworker(void *t) } MT_lock_unset(&flow->flowlock, "MALworker"); + q_enqueue(flow->done, fe); if ( fnxt == 0) { if (todo->last == 0) profilerHeartbeatEvent("wait"); else - MALresourceFairness(flow->cntxt, flow->mb, usec); + MALresourceFairness(usec); } - q_enqueue(flow->done, fe); } GDKfree(GDKerrbuf); GDKsetbuf(0); 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 @@ -562,7 +562,7 @@ str runMALsequence(Client cntxt, MalBlkP //Ensure we spread system resources over multiple users as well. //if ( cntxt->idx > 1 ) - //MALresourceFairness(cntxt,mb,0); + //MALresourceFairness(cntxt,mb,GDKusec()- mb->starttime); runtimeProfileBegin(cntxt, mb, stk, stkpc, &runtimeProfile, 1); if (pci->recycle > 0) stk->clk = GDKusec(); diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c --- a/monetdb5/mal/mal_resource.c +++ b/monetdb5/mal/mal_resource.c @@ -184,7 +184,7 @@ static MT_Lock runningLock #endif void -MALresourceFairness(Client cntxt, MalBlkPtr mb, lng usec) +MALresourceFairness(lng usec) { size_t rss; unsigned int delay; @@ -210,20 +210,11 @@ MALresourceFairness(Client cntxt, MalBlk if ( rss < MEMORY_THRESHOLD * monet_memory) return; - if ( usec ) - /* worker reporting time spent ! */ - clk = usec / 1000; - else { - /* interpreter calling without timing */ - /* punish based on total duration of call */ - clk = (GDKusec() - mb->starttime)/1000; - if ( clk <= TIMESLICE) - /* use fake time for penalty */ - clk = DELAYUNIT; - } + /* worker reporting time spent in usec! */ + clk = usec / 1000; if ( clk > DELAYUNIT ) { - PARDEBUG mnstr_printf(GDKstdout, "#delay %d initial "LLFMT"n", cntxt->idx, clk); + PARDEBUG mnstr_printf(GDKstdout, "#delay initial "LLFMT"n", clk); ATOMIC_DEC_int(running, runningLock, "MALresourceFairness"); while (clk > 0) { /* speed up wake up when we have memory */ @@ -236,7 +227,7 @@ MALresourceFairness(Client cntxt, MalBlk delay = (unsigned int) ( ((double)DELAYUNIT * running) / threads); if (delay) { if ( delayed++ == 0){ - mnstr_printf(GDKstdout, "#delay %d initial %u["LLFMT"] memory "SZFMT"[%f]\n", cntxt->idx, delay, clk, rss, MEMORY_THRESHOLD * monet_memory); + mnstr_printf(GDKstdout, "#delay initial %u["LLFMT"] memory "SZFMT"[%f]\n", delay, clk, rss, MEMORY_THRESHOLD * monet_memory); mnstr_flush(GDKstdout); } MT_sleep_ms(delay); diff --git a/monetdb5/mal/mal_resource.h b/monetdb5/mal/mal_resource.h --- a/monetdb5/mal/mal_resource.h +++ b/monetdb5/mal/mal_resource.h @@ -31,6 +31,6 @@ mal_export int MALadmission(lng argclaim #endif mal_export lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, int pc, int i, int flag); -mal_export void MALresourceFairness(Client cntxt, MalBlkPtr mb, lng usec); +mal_export void MALresourceFairness(lng usec); #endif /* _MAL_RESOURCE_H*/ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list