⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 status.c

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -