selftest/powerpc: Add additional option to mmap_bench test
This patch adds --pgfault and --iterations options to mmap_bench test. With --pgfault we touch every page mapped. This helps in measuring impact in the page fault path with a patch series. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Родитель
10527e8081
Коммит
be68fb64f7
|
@ -7,17 +7,34 @@
|
|||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <time.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
#define ITERATIONS 5000000
|
||||
|
||||
#define MEMSIZE (128 * 1024 * 1024)
|
||||
#define MEMSIZE (1UL << 27)
|
||||
#define PAGE_SIZE (1UL << 16)
|
||||
#define CHUNK_COUNT (MEMSIZE/PAGE_SIZE)
|
||||
|
||||
static int pg_fault;
|
||||
static int iterations = ITERATIONS;
|
||||
|
||||
static struct option options[] = {
|
||||
{ "pgfault", no_argument, &pg_fault, 1 },
|
||||
{ "iterations", required_argument, 0, 'i' },
|
||||
{ 0, },
|
||||
};
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
printf("mmap_bench <--pgfault> <--iterations count>\n");
|
||||
}
|
||||
|
||||
int test_mmap(void)
|
||||
{
|
||||
struct timespec ts_start, ts_end;
|
||||
unsigned long i = ITERATIONS;
|
||||
unsigned long i = iterations;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts_start);
|
||||
|
||||
|
@ -25,6 +42,11 @@ int test_mmap(void)
|
|||
char *c = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE,
|
||||
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
|
||||
FAIL_IF(c == MAP_FAILED);
|
||||
if (pg_fault) {
|
||||
int count;
|
||||
for (count = 0; count < CHUNK_COUNT; count++)
|
||||
c[count << 16] = 'c';
|
||||
}
|
||||
munmap(c, MEMSIZE);
|
||||
}
|
||||
|
||||
|
@ -35,7 +57,32 @@ int test_mmap(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
signed char c;
|
||||
while (1) {
|
||||
int option_index = 0;
|
||||
|
||||
c = getopt_long(argc, argv, "", options, &option_index);
|
||||
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
switch (c) {
|
||||
case 0:
|
||||
if (options[option_index].flag != 0)
|
||||
break;
|
||||
|
||||
usage();
|
||||
exit(1);
|
||||
break;
|
||||
case 'i':
|
||||
iterations = atoi(optarg);
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
return test_harness(test_mmap, "mmap_bench");
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче