From 18b8e0e3bc231b21eb5aa1dbd26a43eb987c9d4c Mon Sep 17 00:00:00 2001 From: Wenchao Hao Date: Wed, 20 Nov 2024 14:06:17 +0800 Subject: [PATCH] run.sh: update run.sh to get more accurate data --- run.sh | 121 +++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 87 insertions(+), 34 deletions(-) diff --git a/run.sh b/run.sh index 70bb431..da9e5de 100644 --- a/run.sh +++ b/run.sh @@ -1,60 +1,113 @@ +# 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}') -./test_swap > $tmpfile - -pgfault2=$(cat /proc/vmstat | grep pgfault | awk '{print $2}') - -swapout=$(head -n 1 $tmpfile | awk '{print $4}') -swapin=$(tail -n 1 $tmpfile | awk '{print $4}') - cat /sys/block/zram0/mm_stat > $tmpfile -total_size=$(cat $tmpfile | awk '{print $1}') -used_size=$(cat $tmpfile | awk '{print $2}') -comp_ratio=`echo "scale=4; $total_size / $used_size" | bc` +# 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) -anon_fault_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_alloc) -anon_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/anon_fault_fallback) -anon_total=$(($anon_fault_fallback + $anon_fault_alloc)) -folio_alloc_success_ratio=`echo "scale=4; $anon_fault_alloc / $anon_total" | bc` +# 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 +./test_swap > $tmpfile + +# 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)) + +comp_ratio=`echo "scale=4; $zram_total_size_inc / $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` -swpout_alloc=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout) -swpout_fault_fallback=$(cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpout_fallback) -swpout_total=$(($swpout_fault_fallback + $swpout_alloc)) -swapout_success_ratio=`echo "scale=4; $swpout_alloc / $swpout_total" | bc` if [ -f /sys/block/zram0/multi_pages_debug_stat ]; then cat /sys/block/zram0/multi_pages_debug_stat > $tmpfile - nr_write_multipage=$(head -n 1 $tmpfile | awk '{print $5}') - nr_read_multipage=$(head -n 1 $tmpfile | awk '{print $6}') + new_nr_write_multipage=$(head -n 1 $tmpfile | awk '{print $5}') + new_nr_read_multipage=$(head -n 1 $tmpfile | awk '{print $6}') - nr_write_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $6}') - nr_read_failed_multipage=$(cat $tmpfile | grep "failed" | awk '{print $7}') + 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_succeed_multipage=$(($nr_write_multipage-$nr_write_failed_multipage)) - nr_read_succeed_multipage=$(($nr_read_multipage-$nr_read_failed_multipage)) + nr_write_multipage_inc=$(($new_nr_write_multipage-$prev_nr_write_multipage)) + nr_read_multipage_inc=$(($new_nr_read_multipage-$prev_nr_read_multipage)) - zram_write_multipage_ratio=`echo "scale=4; $nr_write_succeed_multipage / $nr_write_multipage" | bc` - zram_read_multipage_ratio=`echo "scale=4; $nr_read_succeed_multipage / $nr_read_multipage" | bc` + 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 $swapout -echo swapin $swapin -echo comp_ratio $comp_ratio -echo pagefault $(($pgfault2-$pgfault1)) -echo folio_alloc_success_ratio $folio_alloc_success_ratio -echo swapout_success_ratio $swapout_success_ratio +echo "swapout_bandwidth $bandwidth_swapout" +echo "swapin_bandwidth $bandwidth_swapin" +echo "comp_ratio $comp_ratio" +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 + echo "zram_write_multipage_ratio $zram_write_multipage_ratio" + echo "zram_read_multipage_ratio $zram_read_multipage_ratio" fi killall test_swap +rm $tmpfile