diff --git a/zramstart b/zramstart index 7df5429..9804655 100755 --- a/zramstart +++ b/zramstart @@ -3,20 +3,32 @@ num_cpus=$(grep -c processor /proc/cpuinfo) [ "$num_cpus" != 0 ] || num_cpus=1 -last_cpu=$((num_cpus - 1)) -FACTOR=33 +threads=$((num_cpus * 4)) +last_thread=$((threads - 1)) +FACTOR=200 + [ -f /etc/sysconfig/zram ] && source /etc/sysconfig/zram || true factor=$FACTOR # percentage memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ') -mem_by_cpu=$(($memtotal/$num_cpus*$factor/100*1024)) +mem_by_cpu=$(($memtotal/$threads*$factor/100*1024)) +modprobe -q zram num_devices=$threads +for i in $(seq 0 $last_thread); do + #enable lz4 if that supported + grep -q lz4 /sys/block/zram$i/comp_algorithm && echo lz4 > /sys/block/zram$i/comp_algorithm + echo $mem_by_cpu > /sys/block/zram$i/disksize + mkswap /dev/zram$i + swapon -p 100 /dev/zram$i +done -modprobe -q zram num_devices=$num_cpus +# vm.vfs_cache_pressure=50 +# vm.dirty_ratio=30 +# vm.dirty_background_ratio=20 -for i in $(seq 0 $last_cpu); do - #enable lz4 if that supported - grep -q lz4 /sys/block/zram$i/comp_algorithm && echo lz4 > /sys/block/zram$i/comp_algorithm - echo $mem_by_cpu > /sys/block/zram$i/disksize - mkswap /dev/zram$i - swapon -p 100 /dev/zram$i -done +# ON SSD +# vm.swappiness=5 +# ON HDD +# vm.swappiness=99 + +# if you having SSD, you may try class 1 (realtime) +# ionice -c 2 -p `pgrep kswapd0` diff --git a/zramstat b/zramstat index 66274c0..13c8b1f 100755 --- a/zramstat +++ b/zramstat @@ -2,12 +2,31 @@ ls /sys/block/zram* > /dev/null 2>&1 || exit 0 +sum_compr=0 +sum_orig=0 + +while [ 1 ]; do + for i in /sys/block/zram*; do - compr=$(< $i/compr_data_size) - orig=$(< $i/orig_data_size) - ratio=0 - if [ $compr -gt 0 ]; then - ratio=$(echo "scale=2; $orig*100/$compr" | bc -q) - fi - echo -e "/dev/${i/*\/}:\t$ratio% ($orig -> $compr)" + compr=$(< $i/compr_data_size) + orig=$(< $i/orig_data_size) + sum_compr=$((sum_compr+compr)) + sum_orig=$((sum_orig+orig)) + ratio=0 + if [ $compr -gt 0 ]; then + ratio=$(echo "scale=2; $orig*100/$compr" | bc -q) + fi +# echo -e "/dev/${i/*\/}:\t$ratio% ($orig -> $compr)" +done + +ratio=0 +if [ $sum_compr -gt 0 ]; then + ratio=$(echo "scale=2; $sum_orig*100/$sum_compr" | bc -q) +fi +sum_orig=$((sum_orig/1024/1024)) +sum_compr=$((sum_compr/1024/1024)) +diff=$((sum_orig-sum_compr)) + +echo -ne "\t GAINED $diff MB by using $sum_compr MB\r " +sleep 1 done