Changeset: 5ee4cc736169 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5ee4cc736169
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_bbp.mx
gdk/gdk_private.h
gdk/gdk_utils.c
monetdb5/mal/mal_debugger.c
monetdb5/modules/kernel/status.mx
Branch: default
Log Message:
Cleanup: removed GDKvmalloc and friends.
We don't use GDKvmalloc anymore: let malloc decide whether it uses
anonymous memory mapped files or the process heap.
Other changes basically follow from this change.
diffs (truncated from 675 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -204,7 +204,7 @@ void BBPreleaseref(bat i);
int BBPrename(bat bid, const char *nme);
int BBPsave(BAT *b);
void BBPshare(bat b);
-int BBPsize;
+bat BBPsize;
int BBPsync(int cnt, bat *subcommit);
void BBPunlock(const char *s);
BAT *BUNappend(BAT *b, const void *right, bit force);
@@ -238,7 +238,6 @@ int GDKgetenv_isyes(const char *name);
int GDKinit(opt *set, int setlen);
void *GDKmalloc(size_t size);
size_t GDKmem_cursize(void);
-size_t GDKmem_heapsize(void);
size_t GDKmem_inuse(void);
void *GDKmmap(char *path, int mode, off_t off, size_t len);
int GDKms(void);
@@ -257,7 +256,6 @@ int GDKupgradevarheap(COLrec *c, var_t v
lng GDKusec(void);
const char *GDKversion(void);
size_t GDKvm_cursize(void);
-size_t GDKvm_heapsize(void);
void *GDKzalloc(size_t size);
void HASHdestroy(BAT *b);
BUN HASHlist(Hash *h, BUN i);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2170,12 +2170,6 @@ gdk_export BAT *BAThashjoin(BAT *l, BAT
* @tab GDKfree (void* blk)
* @item str
* @tab GDKstrdup (str s)
- * @item void*
- * @tab GDKvmalloc (size_t size, size_t *maxsize, int emergency)
- * @item void* @tab
- * GDKvmrealloc (void* pold, size_t oldsize, size_t newsize, size_t oldmax,
size_t *maxsize, int emergency)
- * @item void @tab
- * GDKvmfree (void* blk, size_t size, size_t maxsize)
* @end multitable
*
* These utilities are primarily used to maintain control over critical
interfaces
@@ -2198,8 +2192,6 @@ gdk_export int GDK_vm_trim; /* allow tr
gdk_export size_t GDKmem_inuse(void); /* RAM/swapmem that MonetDB is really
using now */
gdk_export size_t GDKmem_cursize(void); /* RAM/swapmem that MonetDB has
claimed from OS */
gdk_export size_t GDKvm_cursize(void); /* current MonetDB VM address space
usage */
-gdk_export size_t GDKvm_heapsize(void);
-gdk_export size_t GDKmem_heapsize(void);
gdk_export void *GDKmalloc(size_t size);
gdk_export void *GDKzalloc(size_t size);
diff --git a/gdk/gdk_bbp.mx b/gdk/gdk_bbp.mx
--- a/gdk/gdk_bbp.mx
+++ b/gdk/gdk_bbp.mx
@@ -3093,9 +3093,10 @@ BBPtrim(size_t target)
/* recheck targets to see whether the work was already done by
* another thread */
if (target && target != BBPTRIM_ALL) {
- target = GDKmem_inuse() + GDKvm_cursize();
- if (target > GDK_mem_maxsize)
- target -= GDK_mem_maxsize;
+ size_t rss2 = MT_getrss() / 2;
+ target = GDKvm_cursize();
+ if (target > rss2)
+ target -= rss2;
else
target = 0;
}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -76,7 +76,6 @@ void GDKlockHome(void);
void GDKlog(_In_z_ _Printf_format_string_ const char *format, ...)
__attribute__((__format__(__printf__, 1, 2)));
void *GDKmallocmax(size_t size, size_t *maxsize, int emergency);
-size_t GDKmem_heapinuse(void);
int GDKmove(const char *dir1, const char *nme1, const char *ext1, const char
*dir2, const char *nme2, const char *ext2);
int GDKmunmap(void *addr, size_t len);
void *GDKreallocmax(void *pold, size_t size, size_t *maxsize, int emergency);
@@ -85,10 +84,6 @@ int GDKsave(const char *nme, const char
int GDKssort_rev(void *h, void *t, void *base, size_t n, int hs, int ts, int
tpe);
int GDKssort(void *h, void *t, void *base, size_t n, int hs, int ts, int tpe);
int GDKunlink(const char *dir, const char *nme, const char *extension);
-void *GDKvmalloc(size_t size, size_t * maxsize, int emergency);
-void GDKvmfree(void *blk, size_t size, size_t maxsize);
-void GDKvminc(size_t len);
-void *GDKvmrealloc(void *pold, size_t oldsize, size_t newsize, size_t oldmax,
size_t *maxsize, int emergency);
int HASHgonebad(BAT *b, const void *v);
BUN HASHmask(BUN cnt);
Hash *HASHnew(Heap *hp, int tpe, BUN size, BUN mask);
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -288,26 +288,8 @@ size_t GDK_mem_maxsize = GDK_VM_MAXSIZE;
size_t GDK_mem_bigsize = 1 << 30;
size_t GDK_vm_maxsize = GDK_VM_MAXSIZE;
-static int GDK_vm_allocs = 0;
-static int GDK_mem_allocs = 0;
int GDK_vm_trim = 1;
-/* at least each 50M of memory increase, BBPtrim is run */
-#define CHKMEM(meminc, vminc) \
- do { \
- int memchk, vmchk; \
- malloc_lock(); \
- memchk = meminc > 0 && \
- (++GDK_mem_allocs >= 1000 || \
- meminc > LL_CONSTANT(50000)); \
- vmchk = vminc > 0 && \
- (++GDK_vm_allocs >= 10 || \
- vminc > LL_CONSTANT(5000000)); \
- malloc_unlock(); \
- if (memchk || vmchk) \
- GDKmemchk(memchk, vmchk); \
- } while (0)
-
#define SEG_SIZE(x,y)
((x)+(((x)&((1<<(y))-1))?(1<<(y))-((x)&((1<<(y))-1)):0))
#define MAX_BIT ((int) (sizeof(ssize_t)<<3))
@@ -332,8 +314,7 @@ int GDK_vm_trim = 1;
#endif
static volatile size_t GDK_mallocedbytes_estimate = 0;
-static ssize_t GDK_mem_cursize = 0;
-static ssize_t GDK_vm_cursize = 0;
+static volatile size_t GDK_vm_cursize = 0;
#ifndef NDEBUG
static MT_Lock mbyteslock;
@@ -446,28 +427,9 @@ MT_init(void)
}
size_t
-GDKvm_heapsize(void)
+GDKmem_cursize(void)
{
-#ifdef _CYGNUS_H_
- return (size_t) 96 << 20;
-#else
- size_t ret = GDKmem_heapsize();
-
-#ifdef __linux__
- /* on linux, malloc may also use mmapped space, so the
- * bytes-in-malloc may be much bigger than the sbrk()
- * region */
- malloc_lock();
- ret = MAX(GDK_mallocedbytes_estimate, ret);
- malloc_unlock();
-#endif
- return ret;
-#endif
-}
-
-size_t
-GDKmem_heapsize(void)
-{
+ /* RAM/swapmem that Monet has claimed from OS */
size_t heapsize = MT_heapcur() - MT_heapbase;
return (size_t) SEG_SIZE(heapsize, MT_VMUNITLOG);
@@ -477,40 +439,26 @@ size_t
GDKmem_inuse(void)
{
/* RAM/swapmem that Monet is really using now */
- ssize_t mem_cursize = GDK_mem_cursize;
size_t mem_mallocedbytes_estimate;
malloc_lock();
mem_mallocedbytes_estimate = GDK_mallocedbytes_estimate;
malloc_unlock();
- if (mem_cursize < 0)
- mem_cursize = GDK_mem_cursize = 0;
- return mem_cursize + mem_mallocedbytes_estimate;
-}
-
-size_t
-GDKmem_cursize(void)
-{
- /* RAM/swapmem that Monet has claimed from OS */
- ssize_t mem_cursize = GDK_mem_cursize;
-
- if (mem_cursize < 0)
- mem_cursize = GDK_mem_cursize = 0;
-
- return mem_cursize + GDKmem_heapsize();
+ return mem_mallocedbytes_estimate;
}
size_t
GDKvm_cursize(void)
{
/* current Monet VM address space usage */
- ssize_t vm_cursize = GDK_vm_cursize;
+ size_t vm_cursize;
- if (vm_cursize < 0)
- vm_cursize = GDK_vm_cursize = 0;
+ gdk_set_lock(GDKthreadLock, "GDKvm_cursize");
+ vm_cursize = GDK_vm_cursize;
+ gdk_unset_lock(GDKthreadLock, "GDKvm_cursize");
- return vm_cursize + GDKvm_heapsize();
+ return vm_cursize + GDKmem_inuse();
}
#ifdef GDK_VM_KEEPHISTO
@@ -520,12 +468,6 @@ volatile ssize_t GDK_vm_nallocs[MAX_BIT]
volatile ssize_t GDK_nmallocs[MAX_BIT] = { 0 };
#endif
-size_t
-GDKmem_heapinuse(void)
-{
- return GDK_mallocedbytes_estimate;
-}
-
static volatile int GDK_heapcheck_last = 0;
static void
@@ -545,9 +487,9 @@ GDKmem_heapcheck(int t)
\
malloc_lock(); \
GDK_mallocedbytes_estimate += (_memdelta); \
- malloc_unlock(); \
GDKmallidx(_idx, _memdelta); \
GDK_nmallocs[_idx]++; \
+ malloc_unlock(); \
} while (0)
#define heapdec(memdelta) \
do { \
@@ -562,9 +504,9 @@ GDKmem_heapcheck(int t)
} else { \
GDK_mallocedbytes_estimate -= _memdelta; \
} \
- malloc_unlock(); \
GDKmallidx(_idx, _memdelta); \
GDK_nmallocs[_idx]--; \
+ malloc_unlock(); \
} while (0)
#else
#define heapinc(_memdelta) \
@@ -589,51 +531,49 @@ GDKmem_heapcheck(int t)
#endif
#ifdef GDK_VM_KEEPHISTO
-#define meminc(memdelta, vmdelta, fcn) \
+#define meminc(vmdelta, fcn) \
do { \
- ssize_t _memdelta = (ssize_t) (memdelta); \
- ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ size_t _vmdelta = (size_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
int _idx; \
\
gdk_set_lock(GDKthreadLock, fcn); \
- GDK_mem_cursize += _memdelta; \
GDKmallidx(_idx, _vmdelta); \
GDK_vm_nallocs[_idx]++; \
GDK_vm_cursize += _vmdelta; \
gdk_unset_lock(GDKthreadLock, fcn); \
} while (0)
-#define memdec(memdelta, vmdelta, fcn) \
+#define memdec(vmdelta, fcn) \
do { \
- ssize_t _memdelta = (ssize_t) (memdelta); \
- ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ size_t _vmdelta = (size_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
int _idx; \
\
gdk_set_lock(GDKthreadLock, fcn); \
- GDK_mem_cursize -= _memdelta; \
GDKmallidx(_idx, _vmdelta); \
GDK_vm_nallocs[_idx]--; \
- GDK_vm_cursize -= _vmdelta; \
+ if (_vmdelta > GDK_vm_cursize) \
+ GDK_vm_cursize = 0; \
+ else \
+ GDK_vm_cursize -= _vmdelta; \
gdk_unset_lock(GDKthreadLock, fcn); \
} while (0)
#else
-#define meminc(memdelta, vmdelta, fcn) \
+#define meminc(vmdelta, fcn) \
do { \
- ssize_t _memdelta = (ssize_t) (memdelta); \
- ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ size_t _vmdelta = (size_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
\
gdk_set_lock(GDKthreadLock, fcn); \
- GDK_mem_cursize += _memdelta; \
GDK_vm_cursize += _vmdelta; \
gdk_unset_lock(GDKthreadLock, fcn); \
} while (0)
-#define memdec(memdelta, vmdelta, fcn) \
+#define memdec(vmdelta, fcn) \
do { \
- ssize_t _memdelta = (ssize_t) (memdelta); \
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list