You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
766 B

#include <common.h>
static long
nowms(void)
{
struct timeval tv;
if (gettimeofday(&tv, NULL))
errx(-1, "nowms");
return tv.tv_sec*1000 + tv.tv_usec/1000;
}
#define SZ (1 << 22)
#define N 1024
int main(int argc, char **argv)
{
printf("mmapbench\n");
const size_t sz = SZ;
long tot = 0;
for (int i = 0 ; i < N; i++) {
char *p = mmap(NULL, sz, PROT_READ | PROT_WRITE,
MAP_ANON | MAP_PRIVATE, -1, 0);
if (p == MAP_FAILED)
errx(-1, "mmap failed");
long st = nowms();
for (int j = 0; j < sz; j += 4096) {
p[j] = 0xcc;
}
tot += nowms() - st;
if (munmap(p, sz) != 0)
errx(-1, "munmap failed");
}
printf("mmapbench %ld pgfaults in %ld ms\n", (long) (SZ/4096) * N, tot);
return 0;
}