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