OpenWrt – Diff between revs 2 and 3

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 2 Rev 3
Line 14... Line 14...
14 local zram_size="$( uci -q get system.@system[0].zram_size_mb )" 14 local zram_size="$( uci -q get system.@system[0].zram_size_mb )"
15 local ram_size="$( ram_size )" 15 local ram_size="$( ram_size )"
Line 16... Line 16...
16   16  
17 if [ -z "$zram_size" ]; then 17 if [ -z "$zram_size" ]; then
18 # e.g. 6mb for 16mb-routers or 61mb for 128mb-routers 18 # e.g. 6mb for 16mb-routers or 61mb for 128mb-routers
19 echo $(( ram_size / 2048 )) 19 echo $(( $ram_size / 2048 ))
20 else 20 else
21 echo "$zram_size" 21 echo "$zram_size"
22 fi 22 fi
Line 23... Line 23...
23 } 23 }
24   24  
25 zram_applicable() 25 zram_applicable()
Line -... Line 26...
-   26 {
-   27 local zram_dev="$1"
-   28  
-   29 grep -sq ^"$zram_dev " /proc/swaps && {
-   30 logger -s -t zram_applicable -p daemon.notice "[OK] '$zram_dev' already active"
26 { 31 return 1
27 local zram_dev="$1" 32 }
28   33  
29 [ -e "$zram_dev" ] || { 34 [ -e "$zram_dev" ] || {
Line 47... Line 52...
47 } 52 }
48 } 53 }
Line 49... Line 54...
49   54  
50 zram_dev() 55 zram_dev()
51 { 56 {
-   57 local core="$1"
52 local idx="$1" 58  
53 echo "/dev/zram${idx:-0}" 59 echo "/dev/zram${core:-0}"
Line 54... Line 60...
54 } 60 }
55   61  
56 zram_reset() 62 zram_reset()
Line 61... Line 67...
61   67  
62 logger -s -t zram_reset -p daemon.debug "$message via $proc_entry" 68 logger -s -t zram_reset -p daemon.debug "$message via $proc_entry"
63 echo "1" >"$proc_entry" 69 echo "1" >"$proc_entry"
Line 64... Line 70...
64 } 70 }
65   71  
66 zram_getdev() 72 list_cpu_idx()
67 { -  
68 #get unallocated zram dev -  
69 local zdev=$( zram_dev ) 73 {
70   -  
71 if [ "$(mount | grep $zdev)" ]; then -  
72 local idx=`cat /sys/class/zram-control/hot_add` -  
73 zdev="$( zram_dev $idx )" -  
74 fi -  
75   -  
76 echo $zdev -  
77 } -  
78   -  
79 zram_comp_algo() 74 # Offset by 1 if /dev/zram0 is in use by /tmp
80 { 75 if [ "$(mount | grep /dev/zram0)" ]; then
81 local dev="$1" -  
82 local zram_comp_algo="$( uci -q get system.@system[0].zram_comp_algo )" 76 local line i=1
83   77 # Hot-add new ZRAM device (if necessary)
84 if [ -z "$zram_comp_algo" ] || [ ! -e /sys/block/$( basename $dev )/comp_algorithm ]; then 78 if [ ! -b /dev/zram1 ]; then
85 return 0 -  
86 fi -  
87   -  
88 if [ `grep -c "$zram_comp_algo" /sys/block/$( basename $dev )/comp_algorithm` -ne 0 ]; then -  
89 logger -s -t zram_comp_algo -p daemon.debug "Set compression algorithm '$zram_comp_algo' for zram '$dev'" 79 cat /sys/class/zram-control/hot_add
90 echo $zram_comp_algo > "/sys/block/$( basename $dev )/comp_algorithm" -  
91 else -  
92 logger -s -t zram_comp_algo -p daemon.debug "Compression algorithm '$zram_comp_algo' is not supported for '$dev'" -  
93 fi -  
94 } -  
95   -  
96 zram_comp_streams() 80 fi
97 { -  
98 local dev="$1" -  
99 local logical_cpus=$( grep -ci "^processor" /proc/cpuinfo ) -  
100 [ $logical_cpus -gt 1 ] || return 1 -  
101 local zram_comp_streams="$( uci -q get system.@system[0].zram_comp_streams )" -  
102 [ -n "$zram_comp_streams" ] && [ "$zram_comp_streams" -le "$logical_cpus" ] || zram_comp_streams=$logical_cpus -  
103 if [ -e /sys/block/$( basename $dev )/max_comp_streams ]; then -  
104 logger -s -t zram_comp_streams -p daemon.debug "Set max compression streams to '$zram_comp_streams' for zram '$dev'" 81 else
-   82 local line i=0
-   83 fi
-   84
-   85 while read line; do {
-   86 case "$line" in
-   87 [Pp]rocessor*)
-   88 echo $i
-   89 i=$(( $i + 1 ))
-   90 ;;
105 echo $zram_comp_streams > /sys/block/$( basename $dev )/max_comp_streams 91 esac
Line 106... Line 92...
106 fi 92 } done <"/proc/cpuinfo"
107 } 93 }
108   -  
109 start() -  
110 { -  
111 local zram_size="$( zram_size )" 94  
112 local zram_dev 95 start()
113   -  
114 if [ $( grep -cs zram /proc/swaps ) -ne 0 ]; then -  
Line 115... Line 96...
115 logger -s -t zram_start -p daemon.notice "[OK] zram swap is already mounted" 96 {
116 return 1 97 # http://shmilyxbq-compcache.googlecode.com/hg/README
117 fi -  
118   -  
Line -... Line 98...
-   98 # if >1 cpu_core, reinit kmodule with e.g. num_devices=4
119 zram_dev="$( zram_getdev )" 99  
120 zram_applicable "$zram_dev" || return 1 100 local zram_size="$( zram_size )"
-   101 local zram_dev core
-   102  
-   103 for core in $( list_cpu_idx ); do {
121   104 zram_dev="$( zram_dev "$core" )"
122 logger -s -t zram_start -p daemon.debug "activating '$zram_dev' for swapping ($zram_size MegaBytes)" 105 zram_applicable "$zram_dev" || return 1
123   106  
124 zram_reset "$zram_dev" "enforcing defaults" 107 logger -s -t zram_start -p daemon.debug "activating '$zram_dev' for swapping ($zram_size MegaBytes)"
-   108  
125 zram_comp_algo "$zram_dev" 109 zram_reset "$zram_dev" "enforcing defaults"
Line 126... Line 110...
126 zram_comp_streams "$zram_dev" 110 echo $(( $zram_size * 1024 * 1024 )) >"/sys/block/$( basename $zram_dev )/disksize"
127 echo $(( $zram_size * 1024 * 1024 )) >"/sys/block/$( basename "$zram_dev" )/disksize" 111 mkswap "$zram_dev"
128 mkswap "$zram_dev" 112 swapon "$zram_dev"
Line 129... Line 113...
129 swapon "$zram_dev" 113 } done
130 } -  
131   114 }
132 stop() 115  
-   116 stop()
133 { 117 {
134 local zram_dev 118 local zram_dev proc_entry
135   119  
136 for zram_dev in $( grep zram /proc/swaps |awk '{print $1}' ); do { 120 for core in $( list_cpu_idx ); do {
-   121 zram_dev="$( zram_dev "$core" )"
-   122 proc_entry="/sys/block/$( basename "$zram_dev" )/reset"
137 logger -s -t zram_stop -p daemon.debug "deactivate swap $zram_dev" 123  
138 swapoff "$zram_dev" && zram_reset "$zram_dev" "claiming memory back" 124 grep -sq ^"$zram_dev " /proc/swaps && {