Changeset: 0323ba750942 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0323ba750942
Modified Files:
        monetdb5/mal/mal.h
        monetdb5/mal/mal_recycle.c
        monetdb5/mal/mal_resource.c
Branch: default
Log Message:

Use more memory on large machines
For the top of the line 1 TB RAM machines, we now
use up to 8GB before trimming parallel processing.


diffs (107 lines):

diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -38,7 +38,13 @@
  * for additional system variable settings.
  */
 #define MAXSCRIPT 64
-#define MEMORY_THRESHOLD  0.8
+
+/*
+ * MonetDB assumes it can use most of the machines memory,
+ * leaving a small portion for other programs.
+ */
+#define GB (((lng)1024)*1024*1024)
+#define MEMORY_THRESHOLD  (0.2 * monet_memory > 8 * GB?  monet_memory - 8 * 
GB: 0.8 * monet_memory)
 
 mal_export char     monet_cwd[PATHLENGTH];
 mal_export size_t      monet_memory;
diff --git a/monetdb5/mal/mal_recycle.c b/monetdb5/mal/mal_recycle.c
--- a/monetdb5/mal/mal_recycle.c
+++ b/monetdb5/mal/mal_recycle.c
@@ -168,10 +168,10 @@ int chooseVictims(Client cntxt, int *lea
 {
        int i,j,l;
        lng freed, sz;
-       lng target = (lng) MT_getrss() - (lng) (MEMORY_THRESHOLD * 
monet_memory);
+       lng target = (lng) MT_getrss() - (lng) (MEMORY_THRESHOLD );
 
 #ifdef _DEBUG_CACHE_
-       mnstr_printf(cntxt->fdout,"#chooseVictims %d mem "LLFMT, ltop, (lng) 
(MEMORY_THRESHOLD * monet_memory));
+       mnstr_printf(cntxt->fdout,"#chooseVictims %d mem "LLFMT, ltop, (lng) 
(MEMORY_THRESHOLD ));
        mnstr_printf(cntxt->fdout," RSS "LLFMT, (lng) MT_getrss());
        mnstr_printf(cntxt->fdout," " LLFMT" srch %5.2f\n",
                target, ((double)recycleSearchTime)/recycleSearchCalls);
@@ -382,7 +382,7 @@ newpass:
 
        GDKfree(dmask);
        /* check if a new pass of cache cleaning is needed */
-       if ( recyclerMemoryUsed > (lng) (MEMORY_THRESHOLD * monet_memory) )
+       if ( recyclerMemoryUsed > (lng) (MEMORY_THRESHOLD ) )
        goto newpass;
 }
 
@@ -399,7 +399,7 @@ RECYCLEkeep(Client cntxt, MalBlkPtr mb, 
 
        if ( recycleBlk->stop >= recycleCacheLimit)
                return ; /* no more caching */
-       if ( recyclerMemoryUsed + p->wbytes > (lng) (MEMORY_THRESHOLD * 
monet_memory))
+       if ( recyclerMemoryUsed + p->wbytes > (lng) (MEMORY_THRESHOLD ))
                return ; /* no more caching */
 
        rd = 0;
@@ -859,7 +859,7 @@ RECYCLEexit(Client cntxt, MalBlkPtr mb, 
        assert(recyclerMemoryUsed >=0);
        MT_lock_set(&recycleLock, "recycle");
        clk = GDKusec();
-       if ( recyclerMemoryUsed >  (lng) (MEMORY_THRESHOLD * monet_memory)  || 
recycleBlk->stop >= recycleCacheLimit)
+       if ( recyclerMemoryUsed >  (lng) (MEMORY_THRESHOLD )  || 
recycleBlk->stop >= recycleCacheLimit)
                RECYCLEcleanCache(cntxt);
 
        /* infinite case, admit all new instructions */
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
@@ -78,7 +78,7 @@ getMemoryClaim(MalBlkPtr mb, MalStkPtr s
                heapinfo(&b->T->heap); total += vol;
                heapinfo(b->T->vheap); total += vol;
                hashinfo(b->T->hash); total += vol;
-               total = total > (lng)(MEMORY_THRESHOLD * monet_memory) ? 
(lng)(MEMORY_THRESHOLD * monet_memory) : total;
+               total = total > (lng)(MEMORY_THRESHOLD ) ? 
(lng)(MEMORY_THRESHOLD ) : total;
                BBPunfix(b->batCacheid);
        }
        return total;
@@ -127,7 +127,7 @@ MALadmission(lng argclaim, lng hotclaim)
        if (memoryclaims < 0)
                memoryclaims = 0;
        if (memorypool <= 0 && memoryclaims == 0)
-               memorypool = (lng)(MEMORY_THRESHOLD * monet_memory);
+               memorypool = (lng)(MEMORY_THRESHOLD );
 
        if (argclaim > 0) {
                if (memoryclaims == 0 || memorypool > argclaim + hotclaim) {
@@ -182,7 +182,7 @@ MALresourceFairness(lng usec)
        /* use GDKmem_cursize as MT_getrss() is too expensive */
        rss = GDKmem_cursize();
        /* ample of memory available*/
-       if ( rss < MEMORY_THRESHOLD * monet_memory && usec <= TIMESLICE)
+       if ( rss < MEMORY_THRESHOLD && usec <= TIMESLICE)
                return;
 
        /* worker reporting time spent  in usec! */
@@ -194,13 +194,13 @@ MALresourceFairness(lng usec)
                /* always keep one running to avoid all waiting  */
                while (clk > 0 && running >= 2 && delayed < MAX_DELAYS) {
                        /* speed up wake up when we have memory */
-                       if (rss < MEMORY_THRESHOLD * monet_memory)
+                       if (rss < MEMORY_THRESHOLD )
                                break;
                        threads = GDKnr_threads > 0 ? GDKnr_threads : 1;
                        delay = (unsigned int) ( ((double)DELAYUNIT * running) 
/ threads);
                        if (delay) {
                                if ( delayed++ == 0){
-                                               mnstr_printf(GDKstdout, "#delay 
initial %u["LLFMT"] memory  "SZFMT"[%f]\n", delay, clk, rss, MEMORY_THRESHOLD * 
monet_memory);
+                                               mnstr_printf(GDKstdout, "#delay 
initial %u["LLFMT"] memory  "SZFMT"[%f]\n", delay, clk, rss, MEMORY_THRESHOLD );
                                                mnstr_flush(GDKstdout);
                                }
                                MT_sleep_ms(delay);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to