#include #include #include #include #include #define SIZE (7UL*1024*1024*1024) #define ITER 3 int main(void) { int to_alloc, i; char *mem, *p; char n; struct timeval tp; double sec, usec, start, end; mem = (char *) malloc(SIZE); if (!mem) return 1; bzero(mem, SIZE); asm volatile("" : : : "memory"); printf("Run ksm in host and after full scan press enter."); getchar(); gettimeofday(&tp, NULL); sec = (double) tp.tv_sec; usec = (double) tp.tv_usec/1E6; start = sec + usec; for (i = 0; i < ITER; i++) { p = mem; while (p++ < mem + SIZE) n += *p; } gettimeofday(&tp, NULL); sec = (double) tp.tv_sec; usec = (double) tp.tv_usec/1E6; end = sec + usec; printf("Time: %f\n", end - start); free(mem); return 0; }