Re: [PATCH 0/1] mm, shmem: map few pages around fault address if they are in page cache

From: Andrew Morton
Date: Fri Feb 28 2014 - 20:39:18 EST


On Fri, 28 Feb 2014 16:35:16 -0800 Ning Qu <quning@xxxxxxxxx> wrote:

> Sorry about my fault about the experiments, here is the real one.
>
> Btw, apparently, there are still some questions about the results and
> I will sync with Kirill about his test command line.
>
> Below is just some simple experiment numbers from this patch, let me know if
> you would like more:
>
> Tested on Xeon machine with 64GiB of RAM, using the current default fault
> order 4.
>
> Sequential access 8GiB file
> Baseline with-patch
> 1 thread
> minor fault 8,389,052 4,456,530
> time, seconds 9.55 8.31

The numbers still seem wrong. I'd expect to see almost exactly 2M minor
faults with this test.

Looky:

#include <sys/mman.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define G (1024 * 1024 * 1024)

int main(int argc, char *argv[])
{
char *p;
int fd;
unsigned long idx;
int sum = 0;

fd = open("foo", O_RDONLY);
if (fd < 0) {
perror("open");
exit(1);
}
p = mmap(NULL, 1 * G, PROT_READ, MAP_PRIVATE, fd, 0);
if (p == MAP_FAILED) {
perror("mmap");
exit(1);
}

for (idx = 0; idx < 1 * G; idx += 4096)
sum += p[idx];
printf("%d\n", sum);
exit(0);
}

z:/home/akpm> /usr/bin/time ./a.out
0
0.05user 0.33system 0:00.38elapsed 99%CPU (0avgtext+0avgdata 4195856maxresident)k
0inputs+0outputs (0major+262264minor)pagefaults 0swaps

z:/home/akpm> dc
16o
262264 4 * p
1001E0

That's close!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/