#!/bin/bash # To create 4 GB file: This will allocate space on disk # $ dd < /dev/zero bs=1048576 count=4096 > testfile #10GB FILE=/mnt/pmem/10mmaptest #200GB #FILE=/mnt/pmem/bigmmaptest #ACCESS="--randomaccess" #echo $FILE PERF="perf record -g -e page-faults -e dTLB-load-misses -e LLC-load-misses -e offcore_requests.all_data_rd -e offcore_response.all_code_rd.llc_miss.any_response -e kmem:* -e filemap:* -e huge_memory:* -e pagemap:* -e dtlb_load_misses.walk_completed_1g -e dtlb_load_misses.walk_completed_2m_4m -e dtlb_load_misses.walk_completed_4k -e dtlb_load_misses.walk_completed -e dtlb_load_misses.walk_duration -e dtlb_load_misses.miss_causes_a_walk -e dtlb_load_misses.stlb_hit -e dtlb_load_misses.stlb_hit_2m -e dtlb_load_misses.stlb_hit_4k -e page-faults -e major-faults -e minor-faults -e cycles -e ext4:* -e vmscan:*" PERF="perf record -e cycles -e dTLB-loads -e dTLB-load-misses -e page-faults" drop_caches() { sync; (echo 1) > /proc/sys/vm/drop_caches; } # Use the block below to run a single test while collecting profiling info PROFILING_RUN=0 if [ ${PROFILING_RUN} = 1 ] then echo "Doing a profiling run..." BLOCK=16384 #BLOCK=64 TEST=readmmap echo $FILE $BLOCK $TEST drop_caches # $PERF ./mmapVsys -b ${BLOCK} --${TEST} -f ${FILE} ${ACCESS} exit 0 fi # Uncomment for random access tests. #echo $ACCESS # Uncomment for creating a new file. #CREATE="--createfile" # Size in GB #SIZE="-s 32" #echo $CREATE ${SIZE}GB #for TEST in readsyscall #for TEST in readmmap readsyscall writesyscall #for TEST in readmmap readsyscall writemmap writesyscall # for BLOCK in 512 1024 2048 4096 8192 16384 # for BLOCK in 4096 8192 16384 for i in {1..2} #for i in {1} do for BLOCK in 64 256 1024 4096 8192 16384 2097152 1073741824 #for BLOCK in 4096 8192 16384 32768 65536 1048576 2097152 6291456 # 8kMyst # for BLOCK in 4080 4084 4088 4092 4092 4096 4097 4098 4099 4100 4104 4108 4112 4128 4144 4160 4224 4288 4352 4608 4864 5120 6144 7138 8192 #for BLOCK in 4096 4097 do #echo $BLOCK drop_caches ./tmmap -b $BLOCK -f $FILE --$2 --threads $1 ${ACCESS} --silent done done