📄 status.c
字号:
#line 189 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"#include "mal_config.h"#include "gdk.h"#include <stdarg.h>#include <time.h>#include "mal_exception.h"#include "status.h"#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_SYS_TIMES_H#include <sys/times.h>#include <stream.h>#endif#ifndef NATIVE_WIN32# ifndef HZ# if !defined(HAVE_SYSCONF) || !defined(_SC_CLK_TCK)# define HZ CLK_TCK# endif# endif#endifextern lng GDKcur_cursize(void);status_export str SYSgetmem_cursize(lng *num);strSYSgetmem_cursize(lng *num){ *num = GDKmem_cursize(); return MAL_SUCCEED;}status_export str SYSgetmem_maxsize(lng *num);strSYSgetmem_maxsize(lng *num){ *num = GDK_mem_maxsize; return MAL_SUCCEED;}status_export str SYSgetvm_cursize(lng *num);strSYSgetvm_cursize(lng *num){ *num = GDKvm_cursize(); return MAL_SUCCEED;}status_export str SYSgetvm_maxsize(lng *num);strSYSgetvm_maxsize(lng *num){ *num = GDK_vm_maxsize; return MAL_SUCCEED;}status_export str SYSsetvm_maxsize(lng *num);strSYSsetvm_maxsize(lng *num){ GDK_vm_maxsize = (size_t) *num; return MAL_SUCCEED;}/*str memMap() { MT_alloc_print(); return MAL_SUCCEED;}*/#line 273 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"#ifndef NATIVE_WIN32static time_t clk = 0;static struct tms state;#endifstatus_export str SYScpuStatistics(int *ret);strSYScpuStatistics(int *ret){#ifndef NATIVE_WIN32 struct tms newst;#endif int i; BAT *b;#if !defined(NATIVE_WIN32) && !defined(HZ) && defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK) static int HZ; if (HZ == 0) HZ = sysconf(_SC_CLK_TCK);#endif b = BATnew(TYPE_str, TYPE_int, 32); if (b == 0) throw(MAL, "catalog.gdkCpu", "Failed to create BAT");#ifndef NATIVE_WIN32 if (clk == 0) { clk = time(0); times(&state); } times(&newst); /* store counters, ignore errors */ i = (int) (time(0) - clk); b = BUNins(b, "elapsed", &i, FALSE); i = newst.tms_utime * 1000 / HZ; b = BUNins(b, "user", &i, FALSE); i = (newst.tms_utime - state.tms_utime) * 1000 / HZ; b = BUNins(b, "elapuser", &i, FALSE); i = newst.tms_stime * 1000 / HZ; b = BUNins(b, "system", &i, FALSE); i = (newst.tms_stime - state.tms_stime) * 1000 / HZ; b = BUNins(b, "elapsystem", &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);#endif if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ); #line 189 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (BBPindex("view_gdk_cpu") <= 0) BATname(b, "cpu"); BATroles(b,"gdk","cpu"); BATmode(b,TRANSIENT); BBPkeepref(b->batCacheid); BATfakeCommit(b); *ret = b->batCacheid;#line 325 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" return MAL_SUCCEED;}#line 332 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"static char *memincr = NULL;status_export str SYSmemStatistics(int *ret);strSYSmemStatistics(int *ret){ struct mallinfo m; BAT *b; int i; m = MT_mallinfo(); b = BATnew(TYPE_str, TYPE_int, 32); if (b == 0) throw(MAL, "catalog.memStatistics", "Failed to create BAT"); /* store counters, ignore errors */ if (memincr == NULL) { memincr = MT_heapbase; } i = (MT_heapcur() - memincr); memincr = MT_heapcur(); b = BUNins(b, "memincr", &i, FALSE); i = m.arena; b = BUNins(b, "arena", &i, FALSE); i = m.ordblks; b = BUNins(b, "ordblks", &i, FALSE); i = m.smblks; b = BUNins(b, "smblks", &i, FALSE); i = m.hblkhd; b = BUNins(b, "hblkhd", &i, FALSE); i = m.hblks; b = BUNins(b, "hblks", &i, FALSE); i = m.usmblks; b = BUNins(b, "usmblks", &i, FALSE); i = m.fsmblks; b = BUNins(b, "fsmblks", &i, FALSE); i = m.uordblks; b = BUNins(b, "uordblks", &i, FALSE); i = m.fordblks; b = BUNins(b, "fordblks", &i, FALSE); if (!(b->batDirty&2)) b = BATsetaccess(b, BAT_READ); #line 189 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (BBPindex("view_gdk_mem") <= 0) BATname(b, "mem"); BATroles(b,"gdk","mem"); BATmode(b,TRANSIENT); BBPkeepref(b->batCacheid); BATfakeCommit(b); *ret = b->batCacheid;#line 374 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" return MAL_SUCCEED;}#line 383 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"#line 400 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"intget_mem_bigsize(lng *num){ *num = GDK_mem_bigsize; return GDK_SUCCEED;}intset_mem_bigsize(lng *num){ #line 384 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" size_t sze; if (*num < 0) { GDKerror("set_mem_bigsize: new size must not be < 0!\n"); return GDK_FAIL; }#if SIZEOF_SIZE_T == SIZEOF_INT{ lng size_t_max = 2 * (lng)INT_MAX; if (*num > size_t_max) { GDKerror("set_mem_bigsize: new size must not be > " LLFMT "!\n", size_t_max); return GDK_FAIL; }}#endif sze = (size_t)*num;#line 410 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" GDK_mem_bigsize = MAX(32768, sze); return GDK_SUCCEED;}intget_mem_cursize(lng *num){ *num = GDKmem_cursize(); return GDK_SUCCEED;}intget_mem_maxsize(lng *num){ *num = GDK_mem_maxsize; return GDK_SUCCEED;}intset_mem_maxsize(lng *num){ #line 384 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" size_t sze; if (*num < 0) { GDKerror("set_mem_maxsize: new size must not be < 0!\n"); return GDK_FAIL; }#if SIZEOF_SIZE_T == SIZEOF_INT{ lng size_t_max = 2 * (lng)INT_MAX; if (*num > size_t_max) { GDKerror("set_mem_maxsize: new size must not be > " LLFMT "!\n", size_t_max); return GDK_FAIL; }}#endif sze = (size_t)*num;#line 432 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (sze < GDK_mem_bigsize) set_mem_bigsize(num); GDK_mem_maxsize = MAX(GDK_mem_bigsize, sze); return GDK_SUCCEED;}intget_vm_cursize(lng *num){ *num = GDKvm_cursize(); return GDK_SUCCEED;}intget_vm_minsize(lng *num){ *num = GDK_vm_minsize; return GDK_SUCCEED;}intset_vm_minsize(lng *num){ #line 384 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" size_t sze; if (*num < 0) { GDKerror("set_vm_minsize: new size must not be < 0!\n"); return GDK_FAIL; }#if SIZEOF_SIZE_T == SIZEOF_INT{ lng size_t_max = 2 * (lng)INT_MAX; if (*num > size_t_max) { GDKerror("set_vm_minsize: new size must not be > " LLFMT "!\n", size_t_max); return GDK_FAIL; }}#endif sze = (size_t)*num;#line 456 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (sze < GDK_mem_bigsize) set_mem_bigsize(num); GDK_vm_minsize = MAX(GDK_mem_bigsize, sze); return GDK_SUCCEED;}intget_vm_maxsize(lng *num){ *num = GDK_vm_maxsize; return GDK_SUCCEED;}intset_vm_maxsize(lng *num){ #line 384 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" size_t sze; if (*num < 0) { GDKerror("set_vm_maxsize: new size must not be < 0!\n"); return GDK_FAIL; }#if SIZEOF_SIZE_T == SIZEOF_INT{ lng size_t_max = 2 * (lng)INT_MAX; if (*num > size_t_max) { GDKerror("set_vm_maxsize: new size must not be > " LLFMT "!\n", size_t_max); return GDK_FAIL; }}#endif sze = (size_t)*num;#line 473 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (sze < GDK_vm_minsize) set_vm_minsize(num); GDK_vm_maxsize = MAX(GDK_vm_minsize, sze); return GDK_SUCCEED;}#line 491 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx"status_export str SYSmem_usage(int *ret, lng *minsize);strSYSmem_usage(int *ret, lng *minsize){ lng buns = 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); struct mallinfo m; char buf[1024]; bat i; if (bn == NULL) throw(MAL, "status.memory","Could not create BAT"); BBPlock("SYSmem_usage"); for (i = 1; i < BBPsize; i++) { BAT *b = BBP_cache(i); str s; if (!BBPvalid(i)) continue; s = BBPname(i); sz = 0; if (BBP[i].cache) sz += sizeof(BATstore); if (BBP[i].nme[0]) n += strLen(BBP[i].nme[0]); if (BBP[i].nme[1]) n += strLen(BBP[i].nme[1]); if (BBP[i].path) n += strLen(BBP[i].path); if (b) sz += sizeof(BAT); /* mirror */ if (sz > *minsize) { sprintf(buf, "desc/%s", s); BUNins(bn, buf, &sz, FALSE); } tot += (lng) sz; if (b == NULL || VIEWparent(b)) { continue; } #line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (1) { sz = HEAPmemsize(b->batBuns); if (sz > *minsize) { sprintf(buf, "buns/%s", s); BUNins(bn, buf, &sz, FALSE); } buns += sz; tot += sz; }#line 534 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" #line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (b->hhash) { sz = HEAPmemsize(b->hhash->heap); if (sz > *minsize) { sprintf(buf, "hhsh/%s", s); BUNins(bn, buf, &sz, FALSE); } hhsh += sz; tot += sz; }#line 535 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" #line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (b->thash) { sz = HEAPmemsize(b->thash->heap); if (sz > *minsize) { sprintf(buf, "thsh/%s", s); BUNins(bn, buf, &sz, FALSE); } thsh += sz; tot += sz; }#line 536 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" #line 482 "/export/scratch0/monet/monet.GNU.64.64.d.14791/MonetDB5/src/modules/kernel/status.mx" if (b->hheap) { sz = HEAPmemsize(b->hheap);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -