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

Reply via email to