memory_test/run.sh

120 lines
4.9 KiB
Bash
Raw Permalink Normal View History

# prepare
echo always > /sys/kernel/mm/transparent_hugepage/hugepages-64kB/enabled
tmpfile=$(mktemp)
# record data before test
pgfault1=$(cat /proc/vmstat | grep pgfault | awk '{print $2}')
cat /sys/block/zram0/mm_stat > $tmpfile
# used to calculate zram compress ratio
prev_zram_total_size=$(cat $tmpfile | awk '{print $1}')
prev_zram_used_size=$(cat $tmpfile | awk '{print $2}')
# used to calculate hugepage alloc success ratio
prev_anon_fault_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_alloc)
prev_anon_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_fallback)
# used to calculate hugepage swapout success ratio
prev_swpout_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout)
prev_swpout_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout_fallback)
# used to calculate zram multipage read/write success ratio
if [ -f /sys/block/zram0/multi_pages_debug_stat ]; then
cat /sys/block/zram0/multi_pages_debug_stat > $tmpfile
prev_nr_write_multipage=$(head -n 1 $tmpfile | awk '{print $5}')
prev_nr_read_multipage=$(head -n 1 $tmpfile | awk '{print $6}')
prev_nr_write_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $6}')
prev_nr_read_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $7}')
fi
# start test
cat /sys/block/zram0/mm_stat
./test_swap > $tmpfile
cat /sys/block/zram0/mm_stat
# check data
pgfault2=$(cat /proc/vmstat | grep pgfault | awk '{print $2}')
pgfault_inc=$(($pgfault2-$pgfault1))
bandwidth_swapout=$(head -n 1 $tmpfile | awk '{print $4}')
bandwidth_swapin=$(tail -n 1 $tmpfile | awk '{print $4}')
cat /sys/block/zram0/mm_stat > $tmpfile
# calculate zram comp_ratio
new_zram_total_size=$(cat $tmpfile | awk '{print $1}')
new_zram_used_size=$(cat $tmpfile | awk '{print $2}')
zram_total_size_inc=$(($new_zram_total_size-$prev_zram_total_size))
zram_used_size_inc=$(($new_zram_used_size-$prev_zram_used_size))
zram_total_size_should=524288000
comp_ratio=`echo "scale=4; $zram_total_size_inc / $zram_used_size_inc" | bc`
comp_ratio_should=`echo "scale=4; $zram_total_size_should / $zram_used_size_inc" | bc`
# calculate huge page alloc success ratio
new_anon_fault_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_alloc)
new_anon_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_fallback)
anon_fault_alloc_inc=$(($new_anon_fault_alloc-$prev_anon_fault_alloc))
anon_fault_fallback_inc=$(($new_anon_fault_fallback-$prev_anon_fault_fallback))
anon_fault_total_inc=$(($anon_fault_alloc_inc+$anon_fault_fallback_inc))
anon_fault_success_ratio=`echo "scale=4; $anon_fault_alloc_inc / $anon_fault_total_inc" | bc`
# calculate huge page swapout success ratio
new_swpout_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout)
new_swpout_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout_fallback)
swpout_alloc_inc=$(($new_swpout_alloc-$prev_swpout_alloc))
swpout_fault_fallback_inc=$(($new_swpout_fault_fallback-$prev_swpout_fault_fallback))
swpout_total_inc=$(($swpout_alloc_inc+$swpout_fault_fallback_inc))
swapout_success_ratio=`echo "scale=4; $swpout_alloc_inc / $swpout_total_inc" | bc`
if [ -f /sys/block/zram0/multi_pages_debug_stat ]; then
cat /sys/block/zram0/multi_pages_debug_stat > $tmpfile
new_nr_write_multipage=$(head -n 1 $tmpfile | awk '{print $5}')
new_nr_read_multipage=$(head -n 1 $tmpfile | awk '{print $6}')
new_nr_write_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $6}')
new_nr_read_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $7}')
nr_write_multipage_inc=$(($new_nr_write_multipage-$prev_nr_write_multipage))
nr_read_multipage_inc=$(($new_nr_read_multipage-$prev_nr_read_multipage))
nr_write_failed_multipage_inc=$(($new_nr_write_failed_multipage-$prev_nr_write_failed_multipage))
nr_read_failed_multipage_inc=$(($new_nr_read_failed_multipage-$prev_nr_read_failed_multipage))
nr_write_succeed_multipage_inc=$(($nr_write_multipage_inc-$nr_write_failed_multipage_inc))
nr_read_succeed_multipage_inc=$(($nr_read_multipage_inc-$nr_read_failed_multipage_inc))
zram_write_multipage_ratio=`echo "scale=4; $nr_write_succeed_multipage_inc / $nr_write_multipage_inc" | bc`
zram_read_multipage_ratio=`echo "scale=4; $nr_read_succeed_multipage_inc / $nr_read_multipage_inc" | bc`
fi
echo "swapout_bandwidth $bandwidth_swapout"
echo "swapin_bandwidth $bandwidth_swapin"
echo "comp_ratio $comp_ratio"
echo "comp_ratio_asume $comp_ratio_should"
echo "pagefault increased $pgfault_inc"
echo "anon_fault_success_ratio $anon_fault_success_ratio"
echo "swapout_success_ratio $swapout_success_ratio"
if [ -f /sys/block/zram0/multi_pages_debug_stat ]; then
echo "zram_write_multipage_ratio $zram_write_multipage_ratio"
echo "zram_read_multipage_ratio $zram_read_multipage_ratio"
fi
killall test_swap
rm $tmpfile