Changeset: 9fede45f6015 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9fede45f6015 Modified Files: gdk/gdk_bat.c gdk/gdk_bbp.c gdk/gdk_heap.c gdk/gdk_utils.c monetdb5/modules/kernel/status.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/clients.c monetdb5/modules/mal/inspect.c monetdb5/modules/mal/mdb.c Branch: Jul2017 Log Message:
Merge with Dec2016 branch. diffs (297 lines): diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -508,22 +508,19 @@ BATclear(BAT *b, int force) /* we must dispose of all inserted atoms */ if (force && BATatoms[b->ttype].atomDel == NULL) { - Heap th; - + assert(b->tvheap == NULL || b->tvheap->parentid == b->batCacheid); /* no stable elements: we do a quick heap clean */ /* need to clean heap which keeps data even though the BUNs got removed. This means reinitialize when free > 0 */ - memset(&th, 0, sizeof(th)); - if (b->tvheap) { + if (b->tvheap && b->tvheap->free > 0) { + Heap th; + + memset(&th, 0, sizeof(th)); th.farmid = b->tvheap->farmid; - if (b->tvheap->free > 0 && - ATOMheap(b->ttype, &th, 0) != GDK_SUCCEED) + if (ATOMheap(b->ttype, &th, 0) != GDK_SUCCEED) return GDK_FAIL; - } - assert(b->tvheap == NULL || b->tvheap->parentid == b->batCacheid); - if (b->tvheap && b->tvheap->free > 0) { th.parentid = b->tvheap->parentid; HEAPfree(b->tvheap, 0); *b->tvheap = th; @@ -537,7 +534,7 @@ BATclear(BAT *b, int force) if (tatmdel) { BATiter bi = bat_iterator(b); - for(p = b->batInserted, q = BUNlast(b); p < q; p++) + for (p = b->batInserted, q = BUNlast(b); p < q; p++) (*tatmdel)(b->tvheap, (var_t*) BUNtloc(bi,p)); } } diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1466,7 +1466,7 @@ BBPexit(void) skipped = 0; for (i = 0; i < (bat) ATOMIC_GET(BBPsize, BBPsizeLock); i++) { if (BBPvalid(i)) { - BAT *b = BBP_cache(i); + BAT *b = BBP_desc(i); if (b) { if (b->batSharecnt > 0) { @@ -1483,11 +1483,11 @@ BBPexit(void) bat tp = VIEWtparent(b); bat vtp = VIEWvtparent(b); if (tp) { - BBP_cache(tp)->batSharecnt--; + BBP_desc(tp)->batSharecnt--; --BBP_lrefs(tp); } if (vtp) { - BBP_cache(vtp)->batSharecnt--; + BBP_desc(vtp)->batSharecnt--; --BBP_lrefs(vtp); } VIEWdestroy(b); @@ -1811,42 +1811,57 @@ BBPdump(void) continue; fprintf(stderr, "# %d[%s]: nme='%s' refs=%d lrefs=%d " - "status=%d count=" BUNFMT " " - "Theap=[" SZFMT "," SZFMT "] " - "Tvheap=[" SZFMT "," SZFMT "] " - "Thash=[" SZFMT "," SZFMT "]\n", + "status=%d count=" BUNFMT, i, ATOMname(b->ttype), BBP_logical(i) ? BBP_logical(i) : "<NULL>", BBP_refs(i), BBP_lrefs(i), BBP_status(i), - b->batCount, - HEAPmemsize(&b->theap), - HEAPvmsize(&b->theap), - HEAPmemsize(b->tvheap), - HEAPvmsize(b->tvheap), - b->thash && b->thash != (Hash *) -1 && b->thash != (Hash *) 1 ? HEAPmemsize(b->thash->heap) : 0, - b->thash && b->thash != (Hash *) -1 && b->thash != (Hash *) 1 ? HEAPvmsize(b->thash->heap) : 0); - if (BBP_logical(i) && BBP_logical(i)[0] == '.') { - cmem += HEAPmemsize(&b->theap); - cvm += HEAPvmsize(&b->theap); - nc++; + b->batCount); + if (b->batSharecnt >0) + fprintf(stderr, " shares=%d", b->batSharecnt); + if (b->theap.parentid) { + fprintf(stderr, " Theap -> %d", b->theap.parentid); } else { - mem += HEAPmemsize(&b->theap); - vm += HEAPvmsize(&b->theap); - n++; + fprintf(stderr, + " Theap=[" SZFMT "," SZFMT "]", + HEAPmemsize(&b->theap), + HEAPvmsize(&b->theap)); + if (BBP_logical(i) && BBP_logical(i)[0] == '.') { + cmem += HEAPmemsize(&b->theap); + cvm += HEAPvmsize(&b->theap); + nc++; + } else { + mem += HEAPmemsize(&b->theap); + vm += HEAPvmsize(&b->theap); + n++; + } } if (b->tvheap) { - if (BBP_logical(i) && BBP_logical(i)[0] == '.') { - cmem += HEAPmemsize(b->tvheap); - cvm += HEAPvmsize(b->tvheap); + if (b->tvheap->parentid != b->batCacheid) { + fprintf(stderr, + " Tvheap -> %d", + b->tvheap->parentid); } else { - mem += HEAPmemsize(b->tvheap); - vm += HEAPvmsize(b->tvheap); + fprintf(stderr, + " Tvheap=[" SZFMT "," SZFMT "]", + HEAPmemsize(b->tvheap), + HEAPvmsize(b->tvheap)); + if (BBP_logical(i) && BBP_logical(i)[0] == '.') { + cmem += HEAPmemsize(b->tvheap); + cvm += HEAPvmsize(b->tvheap); + } else { + mem += HEAPmemsize(b->tvheap); + vm += HEAPvmsize(b->tvheap); + } } } - if (b->thash && b->thash != (Hash *) -1 && b->thash != (Hash *) 1) { + if (b->thash && b->thash != (Hash *) -1) { + fprintf(stderr, + " Thash=[" SZFMT "," SZFMT "]", + HEAPmemsize(b->thash->heap), + HEAPvmsize(b->thash->heap)); if (BBP_logical(i) && BBP_logical(i)[0] == '.') { cmem += HEAPmemsize(b->thash->heap); cvm += HEAPvmsize(b->thash->heap); @@ -1855,6 +1870,7 @@ BBPdump(void) vm += HEAPvmsize(b->thash->heap); } } + fprintf(stderr, "\n"); } fprintf(stderr, "# %d bats: mem=" SZFMT ", vm=" SZFMT " %d cached bats: mem=" SZFMT ", vm=" SZFMT "\n", diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c --- a/gdk/gdk_heap.c +++ b/gdk/gdk_heap.c @@ -800,7 +800,7 @@ HEAPwarm(Heap *h) size_t HEAPvmsize(Heap *h) { - if (h && h->free) + if (h && h->base && h->free) return h->size; return 0; } @@ -810,7 +810,7 @@ HEAPvmsize(Heap *h) size_t HEAPmemsize(Heap *h) { - if (h && h->free && h->storage != STORE_MMAP) + if (h && h->base && h->free && h->storage != STORE_MMAP) return h->size; return 0; } diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -138,8 +138,6 @@ GDKsetenv(const char *name, const char * if (BUNappend(GDKkey, name, FALSE) != GDK_SUCCEED || BUNappend(GDKval, value, FALSE) != GDK_SUCCEED) return GDK_FAIL; - BATfakeCommit(GDKkey); - BATfakeCommit(GDKval); return GDK_SUCCEED; } @@ -516,6 +514,12 @@ GDKinit(opt *set, int setlen) GDK_mem_maxsize = (size_t) ((double) MT_npages() * (double) MT_pagesize() * 0.815); BBPinit(); + if (GDK_mem_maxsize / 16 < GDK_mmap_minsize_transient) { + GDK_mmap_minsize_transient = GDK_mem_maxsize / 16; + if (GDK_mmap_minsize_persistent > GDK_mmap_minsize_transient) + GDK_mmap_minsize_persistent = GDK_mmap_minsize_transient; + } + n = (opt *) malloc(setlen * sizeof(opt)); for (i = 0; i < setlen; i++) { int done = 0; @@ -766,16 +770,18 @@ GDKreset(int status, int exit) GDK_mmap_minsize_persistent = MMAP_MINSIZE_PERSISTENT; GDK_mmap_minsize_transient = MMAP_MINSIZE_TRANSIENT; GDK_mmap_pagesize = MMAP_PAGESIZE; - GDK_mem_maxsize = GDK_VM_MAXSIZE; + GDK_mem_maxsize = (size_t) ((double) MT_npages() * (double) MT_pagesize() * 0.815); GDK_vm_maxsize = GDK_VM_MAXSIZE; GDKatomcnt = TYPE_str + 1; GDK_vm_trim = 1; - GDK_mallocedbytes_estimate = 0; - GDK_vm_cursize = 0; - _MT_pagesize = 0; - _MT_npages = 0; + if (GDK_mem_maxsize / 16 < GDK_mmap_minsize_transient) { + GDK_mmap_minsize_transient = GDK_mem_maxsize / 16; + if (GDK_mmap_minsize_persistent > GDK_mmap_minsize_transient) + GDK_mmap_minsize_persistent = GDK_mmap_minsize_transient; + } + GDKnr_threads = 0; GDKnrofthreads = 0; close_stream((stream *) THRdata[0]); diff --git a/monetdb5/modules/kernel/status.c b/monetdb5/modules/kernel/status.c --- a/monetdb5/modules/kernel/status.c +++ b/monetdb5/modules/kernel/status.c @@ -39,12 +39,6 @@ static int pseudo(bat *ret, bat *ret2, BAT *bn, BAT *b) { - if (BATmode(bn,TRANSIENT) != GDK_SUCCEED || - BATmode(b,TRANSIENT) != GDK_SUCCEED) { - return -1; - } - BATfakeCommit(b); - BATfakeCommit(bn); *ret = bn->batCacheid; BBPkeepref(*ret); *ret2 = b->batCacheid; diff --git a/monetdb5/modules/mal/bbp.c b/monetdb5/modules/mal/bbp.c --- a/monetdb5/modules/mal/bbp.c +++ b/monetdb5/modules/mal/bbp.c @@ -24,11 +24,6 @@ pseudo(bat *ret, BAT *b, str X1,str X2) return -1; } BATroles(b,X2); - if (BATmode(b,TRANSIENT) != GDK_SUCCEED) { - BBPunfix(b->batCacheid); - return -1; - } - BATfakeCommit(b); *ret = b->batCacheid; BBPkeepref(*ret); return -0; diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c --- a/monetdb5/modules/mal/clients.c +++ b/monetdb5/modules/mal/clients.c @@ -34,9 +34,6 @@ pseudo(bat *ret, BAT *b, str X1,str X2) if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0) return -1; BATroles(b,X2); - if (BATmode(b,TRANSIENT) != GDK_SUCCEED) - return -1; - BATfakeCommit(b); *ret = b->batCacheid; BBPkeepref(*ret); return 0; diff --git a/monetdb5/modules/mal/inspect.c b/monetdb5/modules/mal/inspect.c --- a/monetdb5/modules/mal/inspect.c +++ b/monetdb5/modules/mal/inspect.c @@ -29,9 +29,6 @@ pseudo(bat *ret, BAT *b, str X1,str X2, if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0) return -1; BATroles(b,X2); - if (BATmode(b,TRANSIENT) != GDK_SUCCEED) - return -1; - BATfakeCommit(b); *ret = b->batCacheid; BBPkeepref(*ret); return 0; diff --git a/monetdb5/modules/mal/mdb.c b/monetdb5/modules/mal/mdb.c --- a/monetdb5/modules/mal/mdb.c +++ b/monetdb5/modules/mal/mdb.c @@ -53,9 +53,6 @@ pseudo(bat *ret, BAT *b, const char *X1, if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0) return -1; BATroles(b,X2); - if (BATmode(b, TRANSIENT) != GDK_SUCCEED) - return -1; - BATfakeCommit(b); *ret = b->batCacheid; BBPkeepref(*ret); return 0; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list