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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list