Changeset: 395ee89dff27 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=395ee89dff27
Modified Files:
monetdb5/mal/mal_interpreter.mx
Branch: default
Log Message:
Looking at the residence memory
Speedup re-activation of workers when resident memory size drops.
diffs (39 lines):
diff --git a/monetdb5/mal/mal_interpreter.mx b/monetdb5/mal/mal_interpreter.mx
--- a/monetdb5/mal/mal_interpreter.mx
+++ b/monetdb5/mal/mal_interpreter.mx
@@ -1134,7 +1134,7 @@ runDFLOWworker(void *t)
/* If in the mean time memory becomes free, or too many sleep,
re-enable worker */
/* It may happen that all threads enter the wait state. So,
keep one running at all time */
if ( nxtfs == 0){
- long delay, clk = (long)(GDKusec()-usec)/1000;
+ long delay, clk = (GDKusec()- usec)/1000;
double factor = 1.0;
if ( clk > DELAYUNIT ) {
mal_set_lock(mal_contextLock, "runMALdataflow");
@@ -1149,20 +1149,19 @@ runDFLOWworker(void *t)
if ( task->todo->last == 0)
clk = -3 * DELAYUNIT;
- PARDEBUG if ( clk > 0)
- mnstr_printf(GDKstdout,"#delay %d
initial %ld\n", task->id, clk);
+ PARDEBUG mnstr_printf(GDKstdout,"#delay %d
initial %ld\n", task->id, clk);
while (clk > 0 ){
/* speed up wake up when we have memory
or too many sleepers */
- factor = memorypool/(MEMORY_THRESHOLD *
monet_memory);
- delay = (long)( DELAYUNIT * (factor >
1.0 ? 1.0:factor)) + 1;
- MT_sleep_ms( delay );
+ factor = MT_getrss()/(MEMORY_THRESHOLD
* monet_memory);
+ delay = (long)( DELAYUNIT * (factor >
1.0 ? 1.0:factor));
+ if ( delay)
+ MT_sleep_ms( delay );
clk -= DELAYUNIT;
}
mal_set_lock(mal_contextLock, "runMALdataflow");
asleep--;
mal_unset_lock(mal_contextLock,
"runMALdataflow");
- PARDEBUG if ( clk > -2 * DELAYUNIT )
- mnstr_printf(GDKstdout,"#delayed
finished thread %d asleep %d\n", task->id, asleep);
+ PARDEBUG mnstr_printf(GDKstdout,"#delayed
finished thread %d asleep %d\n", task->id, asleep);
}
}
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list