Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
compcache
boot.compcache
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File boot.compcache of Package compcache
#!/bin/sh # # System startup script loading compcache kernel module # Copyright (C) 2008 Takashi Iwai <tiwai@suse.de> # Added SMP support by Erdem U. Altinyurt <spamjunkeater@gmail.com> # # /etc/init.d/compcache # ### BEGIN INIT INFO # Provides: boot.compcache # Required-Start: boot.swap # Required-Stop: boot.swap # Should-Start: # Should-Stop: # Default-Start: B # Default-Stop: B # Description: Loads compcache - compressed RAM based swap device ### END INIT INFO . /etc/rc.status . /etc/sysconfig/compcache SWAPON_BIN=/sbin/swapon SWAPOFF_BIN=/sbin/swapoff UDEVADM_BIN=/sbin/udevadm MODPROBE_BIN=/sbin/modprobe RZSCTL_BIN=/usr/sbin/rzscontrol NUM_DEV="num_devices" test -z "$COMPCACHE_NUM_DEVICES" -o "$COMPCACHE_NUM_DEVICES" -le 0 && COMPCACHE_NUM_DEVICES=$(cat /proc/cpuinfo | grep processor | wc -l) test -z "$COMPCACHE_SIZE_KB" && COMPCACHE_SIZE_KB="0" kver=$(uname -r) kver=${kver%%-*} case "$kver" in [3-9].*) ZRAM=zram SWAPDEVNM=/dev/zram case "$kver" in 3.[23].*) NUM_DEV="zram_num_devices";; esac ;; 2.6.*) krel=${kver#2.6.} krel=${krel%%.*} if [ "$krel" -ge 36 ]; then ZRAM=zram SWAPDEVNM=/dev/zram else ZRAM=ramzswap SWAPDEVNM=/dev/ramzswap fi ;; *) exit 1;; esac is_comp_swap_on () { grep -q $1 /proc/swaps return $? } get_memsize_in_kb () { grep MemTotal /proc/meminfo | sed 's/^.* //;s/ .*$//g' } rc_reset case "$1" in start) #echo "Activating compressed RAM swap-devices..." if [ "$COMPCACHE_SIZE_KB" -lt 0 ]; then echo -n "Loading $ZRAM driver with $COMPCACHE_NUM_DEVICES devices " rc_status -u else if [ "$COMPCACHE_SIZE_KB" -eq 0 ]; then # 25% of RAM COMPCACHE_SIZE_KB=$(expr $(get_memsize_in_kb) / 4) fi if [ "$COMPCACHE_SIZE_KB" -lt 1024 ]; then COMPCACHE_SIZE_STR="$COMPCACHE_SIZE_KB kB" else COMPCACHE_SIZE_STR="$(expr $COMPCACHE_SIZE_KB / 1024) MB" fi echo -n "Loading $ZRAM driver with $COMPCACHE_NUM_DEVICES devices and $COMPCACHE_SIZE_STR memory " $MODPROBE_BIN -q $ZRAM $NUM_DEV=$COMPCACHE_NUM_DEVICES &> /dev/null rc_status -v # /dev/ramzswap0 is not available immediately after insmod returns # So, let udev complete its work before we do swapon if [ ! -f ${SWAPDEVNM}0 ]; then if [ -x "$UDEVADM_BIN" ]; then $UDEVADM_BIN settle else sleep 2 fi fi COMPCACHE_DEV_SIZE_KB=$(expr $COMPCACHE_SIZE_KB / $COMPCACHE_NUM_DEVICES) for i in $(seq 0 $(expr $COMPCACHE_NUM_DEVICES - 1) ); do SWAPDEV=$SWAPDEVNM$i SIZEBLK=/sys/block/$ZRAM$i/disksize if [ -f $SIZEBLK ]; then echo $(( $COMPCACHE_DEV_SIZE_KB * 1024 )) > $SIZEBLK else $RZSCTL_BIN $SWAPDEV -d $COMPCACHE_DEV_SIZE_KB -i fi if ! is_comp_swap_on $SWAPDEV; then echo -n "Setting up $ZRAM swap device $i " test "$ZRAM" = "zram" && /sbin/mkswap $SWAPDEV $SWAPON_BIN $SWAPDEV -p 10 rc_status -v fi done fi ;; stop) #echo "Turning off compressed RAM swap-devices" # We can't use COMPCACHE_NUM_DEVICES to enumerate, because the user can # start compcache, lower COMPCACHE_NUM_DEVICES and restart compcache. for SWAPDEV in ${SWAPDEVNM}* ; do if is_comp_swap_on $SWAPDEV; then nm=${SWAPDEV#$SWAPDEVNM} RESETBLK=/sys/block/$ZRAM$nm/reset echo -n "Turning off $ZRAM swap device $nm " $SWAPOFF_BIN $SWAPDEV rc_check if [ -f $RESETBLK ]; then echo 1 > $RESETBLK else $RZSCTL_BIN $SWAPDEV --reset &> /dev/null fi rc_status -v fi done # Let udev complete its work before we unload the ramzswap module if [ -f "$UDEVADM_BIN" ]; then $UDEVADM_BIN settle else sleep 2 fi echo -n "Unloading $ZRAM module " $MODPROBE_BIN -qr $ZRAM &> /dev/null rc_status -v ;; restart) $0 stop $0 start ;; status) echo -n "Checking for compcache " if is_comp_swap_on $SWAPDEVNM; then rc_failed 0 else rc_failed 3 fi rc_status -v ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac rc_exit
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor