summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/pagingtest/pageinout_test.c13
-rw-r--r--tests/pagingtest/thrashing_test.c12
2 files changed, 18 insertions, 7 deletions
diff --git a/tests/pagingtest/pageinout_test.c b/tests/pagingtest/pageinout_test.c
index b9b20de6..eaa116c1 100644
--- a/tests/pagingtest/pageinout_test.c
+++ b/tests/pagingtest/pageinout_test.c
@@ -13,7 +13,7 @@ int pageinout_test(int test_runs, unsigned long long file_size) {
char tmpname[] = "pageinoutXXXXXX";
unsigned char *vec;
int i;
- long long j;
+ unsigned long long j;
volatile char *buf;
int ret = -1;
int rc;
@@ -43,10 +43,17 @@ int pageinout_test(int test_runs, unsigned long long file_size) {
goto err;
}
+ //madvise and fadvise as random to prevent prefetching
+ rc = madvise((void *)buf, file_size, MADV_RANDOM) ||
+ posix_fadvise(fd, 0, file_size, POSIX_FADV_RANDOM);
+ if (rc) {
+ goto err;
+ }
+
for (i = 0; i < test_runs; i++) {
gettimeofday(&begin_time, NULL);
- //Read backwards to prevent mmap prefetching
- for (j = ((file_size - 1) & ~(pagesize - 1)); j >= 0; j -= pagesize) {
+ //read every page into the page cache
+ for (j = 0; j < file_size; j += pagesize) {
buf[j];
}
gettimeofday(&end_time, NULL);
diff --git a/tests/pagingtest/thrashing_test.c b/tests/pagingtest/thrashing_test.c
index 7ecd3ade..b0193d85 100644
--- a/tests/pagingtest/thrashing_test.c
+++ b/tests/pagingtest/thrashing_test.c
@@ -14,7 +14,7 @@ int thrashing_test(int test_runs) {
int fds[4] = {-1, -1, -1, -1};
char tmpnames[4][17] = { "thrashing1XXXXXX", "thrashing2XXXXXX", "thrashing3XXXXXX", "thrashing4XXXXXX" };
volatile char *bufs[4] = {0};
- long long k;
+ unsigned long long k;
int ret = -1;
struct timeval begin_time, end_time, elapsed_time, total_time;
unsigned long long filesize;
@@ -45,14 +45,18 @@ int thrashing_test(int test_runs) {
fprintf(stderr, "Failed to mmap file: %s\n", strerror(errno));
goto err;
}
+ //madvise and fadvise as random to prevent prefetching
+ ret = madvise((void *)bufs[i], filesize, MADV_RANDOM) ||
+ posix_fadvise(fds[i], 0, filesize, POSIX_FADV_RANDOM);
+ if (ret) {
+ goto err;
+ }
}
for (int i = 0; i < test_runs; i++) {
for (size_t j = 0; j < ARRAY_SIZE(fds); j++) {
gettimeofday(&begin_time, NULL);
- //Unfortunately when under memory pressure, fadvise and madvise stop working...
- //Read backwards to prevent mmap prefetching
- for (k = ((filesize - 1) & ~(pagesize - 1)); k >= 0; k -= pagesize) {
+ for (k = 0; k < filesize; k += pagesize) {
bufs[j][k];
}
gettimeofday(&end_time, NULL);