diff --git a/perf_test.sh b/perf_test.sh new file mode 100644 index 0000000..3c29ca2 --- /dev/null +++ b/perf_test.sh @@ -0,0 +1,17 @@ +for dir in /sys/kernel/mm/transparent_hugepage/hugepages-*; do + echo $dir $(cat $dir/enabled) > test.csv +done + +for i in $(seq 1 20000); do + echo $i + + perf stat -e page-faults,dTLB-load-misses,iTLB-load-misses /source/memory_test/test_swap > result 2>&1 + killall test_swap + pagefaults=$(cat result | grep page-faults | awk '{print $1}' | sed 's/,//') + dtlbmiss=$(cat result | grep dTLB-load-misses | awk '{print $1}' | sed 's/,//') + itlbmiss=$(cat result | grep iTLB-load-misses | awk '{print $1}' | sed 's/,//') + swpoutbad=$(cat result | grep "swp out" | awk '{print $4}' | sed 's/,//') + swpinbad=$(cat result | grep "swp in" | awk '{print $4}' | sed 's/,//') + echo $pagefaults,$dtlbmiss,$itlbmiss,$swpoutbad,$swpinbad >> test.csv +done + diff --git a/test_swap.c b/test_swap.c index 0fb139b..2bb9f09 100644 --- a/test_swap.c +++ b/test_swap.c @@ -46,8 +46,8 @@ int main() /* read to trigger swapin and */ gettimeofday(&tv_b, NULL); - for (i = 0; i < SIZE; i += PAGE_SIZE) - *(c + i) = i; + for (i = 0; i < SIZE / 8; i += 8) + *(p + i) = 0xffff + i; gettimeofday(&tv_e, NULL); printf("swp in bandwidth: %lld bytes/ms\n", SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b)));