Changeset: c97921f25d6f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c97921f25d6f
Modified Files:
        gdk/gdk_posix.c
        gdk/gdk_storage.c
Branch: default
Log Message:

Do not use posix_madvise/madvise or posix_fadvise.

Some operating systems (Solaris) actually implement the advise and
unmap pages that were used in sequential mode.  This is not what we
generally want.  What we want is read-ahead, not drop after use.
Without the advise, Solaris starts actually using the available
memory.


diffs (92 lines):

diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -443,6 +443,7 @@ MT_mmap_del(void *base, size_t len)
        }
 }
 
+#if 0
 static int
 MT_fadvise(void *base, size_t len, int advice)
 {
@@ -476,6 +477,7 @@ MT_fadvise(void *base, size_t len, int a
 #endif
        return ret;
 }
+#endif
 
 #endif /* NATIVE_WIN32 */
 
@@ -697,11 +699,11 @@ MT_mmap_inform(void *base, size_t len, i
                MT_mmap_tab[i].random += preload * (advice == MMAP_WILLNEED);   
/* done as a counter to keep track of multiple threads */
                MT_mmap_tab[i].usecnt += preload;       /* active thread count 
*/
                if ( advice == MMAP_DONTNEED){
-                       ret = posix_madvise(MT_mmap_tab[i].base, 
MT_mmap_tab[i].len & ~(MT_pagesize() - 1), MMAP_DONTNEED);
+                       ret = posix_madvise(MT_mmap_tab[i].base, 
MT_mmap_tab[i].len & ~(MT_pagesize() - 1), POSIX_MADV_DONTNEED);
                        MT_mmap_tab[i].usecnt = 0;
                } else
                if (MT_mmap_tab[i].usecnt == 0)
-                       ret = posix_madvise(MT_mmap_tab[i].base, 
MT_mmap_tab[i].len & ~(MT_pagesize() - 1), MMAP_SEQUENTIAL);
+                       ret = posix_madvise(MT_mmap_tab[i].base, 
MT_mmap_tab[i].len & ~(MT_pagesize() - 1), POSIX_MADV_NORMAL);
        }
        (void) pthread_mutex_unlock(&MT_mmap_lock);
        if (ret) {
@@ -898,6 +900,12 @@ MT_msync(void *p, size_t off, size_t len
 int
 MT_madvise(void *p, size_t len, int advice)
 {
+#if 1
+       (void) p;
+       (void) len;
+       (void) advice;
+       return 0;
+#else
        int ret = posix_madvise(p, len & ~(MT_pagesize() - 1), advice);
 
 #ifdef MMAP_DEBUG
@@ -907,6 +915,7 @@ MT_madvise(void *p, size_t len, int advi
        if (MT_fadvise(p, len, advice))
                ret = -1;
        return ret;
+#endif
 }
 
 struct Mallinfo
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -688,6 +688,7 @@ BATload_intern(bat i, int lock)
        return (i < 0) ? BATmirror(b) : b;
 }
 
+#if 0
 /*
  * @- BAT preload
  * To avoid random disk access to large (memory-mapped) BATs it may
@@ -789,10 +790,18 @@ access_heap(str id, str hp, Heap *h, cha
                          (int) (touch >> 20), advice, GDKms() - t);
        return v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7;
 }
+#endif
 
 size_t
 BATaccess(BAT *b, int what, int advice, int preload)
 {
+#if 1
+       (void) b;
+       (void) what;
+       (void) advice;
+       (void) preload;
+       return 0;
+#else
        size_t v = 0, sz, budget = (size_t) (0.8 * MT_npages()), seqbudget = 
budget / 8;
        str id = BATgetId(b);
        BATiter bi = bat_iterator(b);
@@ -877,6 +886,7 @@ BATaccess(BAT *b, int what, int advice, 
                }
        }
        return v;
+#endif
 }
 
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to