Changeset: 222b44e2114e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=222b44e2114e Modified Files: monetdb5/modules/kernel/status.c monetdb5/modules/kernel/status.h monetdb5/modules/kernel/status.mal monetdb5/modules/mal/statistics.c monetdb5/tests/suite_01/Tests/test_15.mal Branch: default Log Message:
Step towards oid-only signatures All signatures with non-oid head should be recast to returning multiple columns instead. This a first step. diffs (truncated from 682 to 300 lines): 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 @@ -49,16 +49,15 @@ #endif static void -pseudo(int *ret, BAT *b, str X1,str X2) { - char buf[BUFSIZ]; - snprintf(buf,BUFSIZ,"%s_%s", X1,X2); - if (BBPindex(buf) <= 0) - BATname(b,buf); - BATroles(b,X1,X2); +pseudo(int *ret, int *ret2, BAT *bn, BAT *b) { + BATmode(bn,TRANSIENT); BATmode(b,TRANSIENT); BATfakeCommit(b); - *ret = b->batCacheid; + BATfakeCommit(bn); + *ret = bn->batCacheid; BBPkeepref(*ret); + *ret2 = b->batCacheid; + BBPkeepref(*ret2); } str @@ -136,10 +135,10 @@ static struct tms state; #endif str -SYScpuStatistics(int *ret) +SYScpuStatistics(int *ret, int *ret2) { int i; - BAT *b; + BAT *b, *bn; #ifdef HAVE_TIMES struct tms newst; # ifndef HZ @@ -155,9 +154,13 @@ SYScpuStatistics(int *ret) # endif #endif - b = BATnew(TYPE_str, TYPE_int, 32); - if (b == 0) + bn = BATnew(TYPE_void, TYPE_str, 32); + b = BATnew(TYPE_void, TYPE_int, 32); + if (b == 0 || bn == 0){ + if ( b) BBPreleaseref(b->batCacheid); + if ( bn) BBPreleaseref(bn->batCacheid); throw(MAL, "status.cpuStatistics", MAL_MALLOC_FAIL); + } #ifdef HAVE_TIMES if (clk == 0) { clk = time(0); @@ -166,43 +169,58 @@ SYScpuStatistics(int *ret) times(&newst); /* store counters, ignore errors */ i = (int) (time(0) - clk); - b = BUNins(b, "elapsed", &i, FALSE); + bn = BUNappend(bn, "elapsed", FALSE); + b = BUNappend(b, &i, FALSE); i = newst.tms_utime * 1000 / HZ; - b = BUNins(b, "user", &i, FALSE); + bn = BUNappend(bn, "user", FALSE); + b = BUNappend(b, &i, FALSE); i = (newst.tms_utime - state.tms_utime) * 1000 / HZ; - b = BUNins(b, "elapuser", &i, FALSE); + bn = BUNappend(bn, "elapuser", FALSE); + b = BUNappend(b, &i, FALSE); i = newst.tms_stime * 1000 / HZ; - b = BUNins(b, "system", &i, FALSE); + bn = BUNappend(b, "system", FALSE); + b = BUNappend(b, &i, FALSE); i = (newst.tms_stime - state.tms_stime) * 1000 / HZ; - b = BUNins(b, "elapsystem", &i, FALSE); + bn = BUNappend(b, "elapsystem", FALSE); + b = BUNappend(b, &i, FALSE); state = newst; #else i = int_nil; - b = BUNins(b, "elapsed", &i, FALSE); - b = BUNins(b, "user", &i, FALSE); - b = BUNins(b, "elapuser", &i, FALSE); - b = BUNins(b, "system", &i, FALSE); - b = BUNins(b, "elapsystem", &i, FALSE); + bn = BUNins(bn, "elapsed", FALSE); + b = BUNins(b, &i, FALSE); + bn = BUNins(bn, "user", FALSE); + b = BUNins(b, &i, FALSE); + bn = BUNins(bn, "elapuser", FALSE); + b = BUNins(b, &i, FALSE); + bn = BUNins(bn, "system", FALSE); + b = BUNins(b, &i, FALSE); + bn = BUNins(bn, "elapsystem", FALSE); + b = BUNins(b, &i, FALSE); #endif if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ); - pseudo(ret,b,"gdk","cpu"); + if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); + pseudo(ret,ret2,bn,b); return MAL_SUCCEED; } static char *memincr = NULL; str -SYSmemStatistics(int *ret) +SYSmemStatistics(int *ret, int *ret2) { struct Mallinfo m; - BAT *b; + BAT *b, *bn; wrd i; m = MT_mallinfo(); - b = BATnew(TYPE_str, TYPE_wrd, 32); - if (b == 0) + bn = BATnew(TYPE_void,TYPE_str, 32); + b = BATnew(TYPE_void, TYPE_wrd, 32); + if (b == 0 || bn == 0) { + if ( b) BBPreleaseref(b->batCacheid); + if ( bn) BBPreleaseref(bn->batCacheid); throw(MAL, "status.memStatistics", MAL_MALLOC_FAIL); + } /* store counters, ignore errors */ if (memincr == NULL) @@ -211,27 +229,38 @@ SYSmemStatistics(int *ret) i = (wrd) (MT_heapcur() - memincr); memincr = MT_heapcur(); - b = BUNins(b, "memincr", &i, FALSE); + bn = BUNappend(bn, "memincr", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.arena; - b = BUNins(b, "arena", &i, FALSE); + bn = BUNappend(bn, "arena", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.ordblks; - b = BUNins(b, "ordblks", &i, FALSE); + bn = BUNappend(bn, "ordblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.smblks; - b = BUNins(b, "smblks", &i, FALSE); + bn = BUNappend(bn, "smblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.hblkhd; - b = BUNins(b, "hblkhd", &i, FALSE); + bn = BUNappend(bn, "hblkhd", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.hblks; - b = BUNins(b, "hblks", &i, FALSE); + bn = BUNappend(bn, "hblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.usmblks; - b = BUNins(b, "usmblks", &i, FALSE); + bn = BUNappend(bn, "usmblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.fsmblks; - b = BUNins(b, "fsmblks", &i, FALSE); + bn = BUNappend(bn, "fsmblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.uordblks; - b = BUNins(b, "uordblks", &i, FALSE); + bn = BUNappend(bn, "uordblks", FALSE); + b = BUNappend(b, &i, FALSE); i = (wrd) m.fordblks; - b = BUNins(b, "fordblks", &i, FALSE); + bn = BUNappend(bn, "fordblks", FALSE); + b = BUNappend(b, &i, FALSE); if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ); - pseudo(ret,b,"gdk","mem"); + if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); + pseudo(ret,ret2,bn,b); return MAL_SUCCEED; } @@ -255,16 +284,20 @@ SYSmemStatistics(int *ret) } str -SYSmem_usage(int *ret, lng *minsize) +SYSmem_usage(int *ret, int *ret2, lng *minsize) { lng hbuns = 0, tbuns = 0, hhsh = 0, thsh = 0, hind = 0, tind = 0, head = 0, tail = 0, tot = 0, n = 0, sz; - BAT *bn = BATnew(TYPE_str, TYPE_lng, 2 * BBPsize); + BAT *bn = BATnew(TYPE_void, TYPE_str, 2 * BBPsize); + BAT *b = BATnew(TYPE_void, TYPE_lng, 2 * BBPsize); struct Mallinfo m; char buf[1024]; bat i; - if (bn == NULL) + if (b == 0 || bn == 0) { + if ( b) BBPreleaseref(b->batCacheid); + if ( bn) BBPreleaseref(bn->batCacheid); throw(MAL, "status.memUsage", MAL_MALLOC_FAIL); + } BBPlock("SYSmem_usage"); for (i = 1; i < BBPsize; i++) { BAT *b = BBP_cache(i); @@ -288,7 +321,8 @@ SYSmem_usage(int *ret, lng *minsize) if (sz > *minsize) { sprintf(buf, "desc/%s", s); - BUNins(bn, buf, &sz, FALSE); + BUNappend(bn, buf, FALSE); + BUNappend(b, &sz, FALSE); } tot += (lng) sz; @@ -303,61 +337,83 @@ SYSmem_usage(int *ret, lng *minsize) heap(b->T->vheap,b->T->vheap,tail,"tail"); } /* totals per category */ - BUNins(bn, "_tot/hbuns", &hbuns, FALSE); - BUNins(bn, "_tot/tbuns", &tbuns, FALSE); - BUNins(bn, "_tot/head", &head, FALSE); - BUNins(bn, "_tot/tail", &tail, FALSE); - BUNins(bn, "_tot/hhsh", &hhsh, FALSE); - BUNins(bn, "_tot/thsh", &thsh, FALSE); - BUNins(bn, "_tot/hind", &hind, FALSE); - BUNins(bn, "_tot/tind", &tind, FALSE); + BUNappend(bn, "_tot/hbuns", FALSE); + BUNappend(b, &hbuns, FALSE); + BUNappend(bn, "_tot/tbuns", FALSE); + BUNappend(b, &tbuns, FALSE); + BUNappend(bn, "_tot/head", FALSE); + BUNappend(b, &head, FALSE); + BUNappend(bn, "_tot/tail", FALSE); + BUNappend(b, &tail, FALSE); + BUNappend(bn, "_tot/hhsh", FALSE); + BUNappend(b, &hhsh, FALSE); + BUNappend(bn, "_tot/thsh", FALSE); + BUNappend(b, &thsh, FALSE); + BUNappend(bn, "_tot/hind", FALSE); + BUNappend(b, &hind, FALSE); + BUNappend(bn, "_tot/tind", FALSE); + BUNappend(b, &tind, FALSE); /* special area 1: BBP rec */ sz = BBPlimit * sizeof(BBPrec) + n; - BUNins(bn, "_tot/bbp", &sz, FALSE); + BUNappend(bn, "_tot/bbp", FALSE); + BUNappend(b, &sz, FALSE); tot += sz; /* this concludes all major traceable Monet memory usages */ tot += sz; - BUNins(bn, "_tot/found", &tot, FALSE); + BUNappend(bn, "_tot/found", FALSE); + BUNappend(b, &tot, FALSE); /* now look at what the global statistics report (to see if it coincides) */ /* how much *used* bytes in heap? */ m = MT_mallinfo(); sz = (size_t) m.usmblks + (size_t) m.uordblks + (size_t) m.hblkhd; - BUNins(bn, "_tot/malloc", &sz, FALSE); + BUNappend(bn, "_tot/malloc", FALSE); + BUNappend(b, &sz, FALSE); /* measure actual heap size, includes wasted fragmented space and anon mmap space used by malloc() */ sz = GDKmem_inuse(); - BUNins(bn, "_tot/heap", &sz, FALSE); + BUNappend(bn, "_tot/heap", FALSE); + BUNappend(b, &sz, FALSE); tot = GDKmem_cursize(); /* allocated swap area memory that is not plain malloc() */ sz = MAX(0, sz - tot); - BUNins(bn, "_tot/valloc", &sz, FALSE); + BUNappend(bn, "_tot/valloc", FALSE); + BUNappend(b, &sz, FALSE); /* swap-area memory is in either GDKvmalloc or heap */ - BUNins(bn, "_tot/swapmem", &tot, FALSE); + BUNappend(bn, "_tot/swapmem", FALSE); + BUNappend(b, &tot, FALSE); BBPunlock("SYSmem_usage"); if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); *ret = bn->batCacheid; BBPkeepref(bn->batCacheid); + if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ); + *ret2 = b->batCacheid; + BBPkeepref(b->batCacheid); + return MAL_SUCCEED; } str -SYSvm_usage(int *ret, lng *minsize) +SYSvm_usage(int *ret, int *ret2, lng *minsize) { lng hbuns = 0, tbuns = 0, hhsh = 0, thsh = 0, hind = 0, tind = 0, head = 0, tail = 0, tot = 0, sz; - BAT *bn = BATnew(TYPE_str, TYPE_lng, 2 * BBPsize); _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list