1
0
Fork 0

all ktune.sh updated to use common functions file

This commit is contained in:
Jan Vcelak 2010-12-22 15:34:13 +01:00
parent 436f4d234b
commit 93ad579f69
8 changed files with 80 additions and 884 deletions

View file

@ -1,76 +1,15 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
ALPM="min_power"
set_alpm() {
for x in /sys/class/scsi_host/*; do
if [ -f $x/ahci_port_cmd ]; then
port_cmd=`cat $x/ahci_port_cmd`;
if [ $((0x$port_cmd & 0x240000)) = 0 -a -f $x/link_power_management_policy ]; then
echo $1 >$x/link_power_management_policy;
else
echo "max_performance" >$x/link_power_management_policy;
fi
fi
done
}
. /etc/tune-profiles/functions
start() {
set_alpm ${ALPM}
set_disk_alpm min_power
return 0
}
# Disable ALPM for all host adapters that support it
stop() {
set_alpm "max_performance"
set_disk_alpm max_performance
return 0
}
# Reload it, just start once more
reload() {
start
}
# Status
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,51 +1,10 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
CPUSPEED_SAVE_FILE="/var/run/tuned/ktune-cpuspeed.save"
CPUSPEED_ORIG_GOV="/var/run/tuned/ktune-cpuspeed-governor-%s.save"
CPUSPEED_STARTED="/var/run/tuned/ktune-cpuspeed-started"
CPUSPEED_CFG="/etc/sysconfig/cpuspeed"
CPUSPEED_INIT="/etc/init.d/cpuspeed"
CPUS="$(ls -d1 /sys/devices/system/cpu/cpu* | sed 's;^.*/;;' | grep "cpu[0-9]\+")"
THP_ENABLE="/sys/kernel/mm/redhat_transparent_hugepage/enabled"
THP_SAVE="/var/run/tuned/ktune-thp.save"
. /etc/tune-profiles/functions
start() {
# Enable performance CPU governor (prefer cpuspeed), if freq scaling is supported
if [ -e $CPUSPEED_INIT ]; then
if [ ! -e $CPUSPEED_SAVE_FILE -a -e $CPUSPEED_CFG ]; then
cp -p $CPUSPEED_CFG $CPUSPEED_SAVE_FILE
sed -e 's/^GOVERNOR=.*/GOVERNOR=performance/g' $CPUSPEED_SAVE_FILE > $CPUSPEED_CFG
fi
service cpuspeed status >/dev/null 2>&1
[ $? -eq 3 ] && touch $CPUSPEED_STARTED || rm -f $CPUSPEED_STARTED
service cpuspeed restart >/dev/null 2>&1
elif [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
echo >/dev/stderr
echo "Suggestion: install 'cpuspeed' package to get best performance and latency." >/dev/stderr
echo "Falling back to 'performance' scaling governor for all CPUs." >/dev/stderr
echo >/dev/stderr
for cpu in $CPUS; do
gov_file=/sys/devices/system/cpu/$cpu/cpufreq/scaling_governor
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
rm -f $save_file
if [ -e $gov_file ]; then
cat $gov_file > $save_file
echo performance > $gov_file
fi
done
fi
# Make sure transparent hugepages are enabled (if supported)
if [ -e $THP_ENABLE ]; then
cut -f2 -d'[' $THP_ENABLE | cut -f1 -d']' > $THP_SAVE
(echo always > $THP_ENABLE) > /dev/null 2>&1
fi
set_cpu_governor performance
enable_transparent_hugepages
# Find non-root and non-boot partitions, disable barriers on them
rootvol=$(df -h / | grep "^/dev" | awk '{print $1}')
@ -53,57 +12,16 @@ start() {
volumes=$(df -hl --exclude=tmpfs | grep "^/dev" | awk '{print $1}')
nobarriervols=$(echo "$volumes" | grep -v $rootvol | grep -v $bootvol)
for vol in $nobarriervols
do
/bin/mount -o remount,nobarrier $vol > /dev/null 2>&1
done
remount_partitions nobarrier $nobarriervols
# Increase the readahead value on all volumes
readaheadvols=$(ls /sys/block/{sd,cciss}*/queue/read_ahead_kb 2>/dev/null)
for d in $readaheadvols
do
(echo 512 > $d) > /dev/null 2>&1
done
set_disk_readahead 512
return 0
}
stop() {
# Re-enable previous CPU governor
if [ -e $CPUSPEED_INIT ]; then
if [ -e $CPUSPEED_SAVE_FILE ]; then
cp -fp $CPUSPEED_SAVE_FILE $CPUSPEED_CFG
rm -f $CPUSPEED_SAVE_FILE
fi
if [ -e $CPUSPEED_STARTED ]; then
rm -f $CPUSPEED_STARTED
service cpuspeed stop >/dev/null 2>&1
else
service cpuspeed restart >/dev/null 2>&1
fi
elif [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
for cpu in $CPUS; do
cpufreq_dir=/sys/devices/system/cpu/$cpu/cpufreq
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
if [ -e $cpufreq_dir/scaling_governor ]; then
if [ -e $save_file ]; then
cat $save_file > $cpufreq_dir/scaling_governor
rm -f $save_file
else
echo userspace > $cpufreq_dir/scaling_governor
cat $cpufreq_dir/cpuinfo_max_freq > $cpufreq_dir/scaling_setspeed
fi
fi
done
fi
# Restore transparent hugepages setting
if [ -e $THP_SAVE ]; then
(echo $(cat $THP_SAVE) > $THP_ENABLE) > /dev/null 2>&1
rm -f $THP_SAVE
fi
restore_cpu_governor
restore_transparent_hugepages
# Find non-root and non-boot partitions, re-enable barriers
rootvol=$(df -h / | grep "^/dev" | awk '{print $1}')
@ -111,61 +29,11 @@ stop() {
volumes=$(df -hl --exclude=tmpfs | grep "^/dev" | awk '{print $1}')
nobarriervols=$(echo "$volumes" | grep -v $rootvol | grep -v $bootvol)
for vol in $nobarriervols
do
/bin/mount -o remount,barrier $vol > /dev/null 2>&1
done
remount_partitions barrier $nobarriervols
# Reset default readahead value on all volumes
readaheadvols=$(ls /sys/block/{sd,cciss}*/queue/read_ahead_kb 2>/dev/null)
for d in $readaheadvols
do
(echo 128 > $d) > /dev/null 2>&1
done
set_disk_readahead 128
return 0
}
reload() {
start
}
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,84 +1,19 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
ALPM="min_power"
set_alpm() {
for x in /sys/class/scsi_host/*; do
if [ -f $x/ahci_port_cmd ]; then
port_cmd=`cat $x/ahci_port_cmd`;
if [ $((0x$port_cmd & 0x240000)) = 0 -a -f $x/link_power_management_policy ]; then
echo $1 >$x/link_power_management_policy;
else
echo "max_performance" >$x/link_power_management_policy;
fi
fi
done
}
. /etc/tune-profiles/functions
start() {
set_alpm ${ALPM}
# Enable power saving mode for Wi-Fi cards
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done > /dev/null 2>&1
set_disk_alpm min_power
enable_wifi_powersave
return 0
}
# Disable ALPM for all host adapters that support it
stop() {
set_alpm "max_performance"
# Reset power saving mode for Wi-Fi cards
for i in /sys/bus/pci/devices/*/power_level ; do echo 0 > $i ; done > /dev/null 2>&1
set_disk_alpm max_performance
disable_wifi_powersave
return 0
}
# Reload it, just start once more
reload() {
start
}
# Status
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,186 +1,31 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
CPUSPEED_SAVE_FILE="/var/run/tuned/ktune-cpuspeed.save"
CPUSPEED_ORIG_GOV="/var/run/tuned/ktune-cpuspeed-governor-%s.save"
CPUSPEED_STARTED="/var/run/tuned/ktune-cpuspeed-started"
CPUSPEED_CFG="/etc/sysconfig/cpuspeed"
CPUSPEED_INIT="/etc/init.d/cpuspeed"
CPUS="$(ls -d1 /sys/devices/system/cpu/cpu* | sed 's;^.*/;;' | grep "cpu[0-9]\+")"
ALPM="min_power"
set_alpm() {
for x in /sys/class/scsi_host/*; do
if [ -f $x/ahci_port_cmd ]; then
port_cmd=`cat $x/ahci_port_cmd`;
if [ $((0x$port_cmd & 0x240000)) = 0 -a -f $x/link_power_management_policy ]; then
echo $1 >$x/link_power_management_policy;
else
echo "max_performance" >$x/link_power_management_policy;
fi
fi
done
}
. /etc/tune-profiles/functions
start() {
# Set ALPM for all host adapters that support it
set_alpm ${ALPM}
# Enables USB autosuspend for all devices
#for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done > /dev/null 2>&1
# Enables multi core power savings for low wakeup systems
[ -e /sys/devices/system/cpu/sched_mc_power_savings ] && echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
# Enable ondemand CPU governor (prefer cpuspeed)
if [ -e $CPUSPEED_INIT ]; then
if [ ! -e $CPUSPEED_SAVE_FILE -a -e $CPUSPEED_CFG ]; then
cp -p $CPUSPEED_CFG $CPUSPEED_SAVE_FILE
sed -e 's/^GOVERNOR=.*/GOVERNOR=ondemand/g' $CPUSPEED_SAVE_FILE > $CPUSPEED_CFG
fi
service cpuspeed status >/dev/null 2>&1
[ $? -eq 3 ] && touch $CPUSPEED_STARTED || rm -f $CPUSPEED_STARTED
service cpuspeed restart >/dev/null 2>&1
else
echo >/dev/stderr
echo "Suggestion: install 'cpuspeed' package to get better powersaving results." >/dev/stderr
echo "Falling back to 'ondemand' scaling governor for all CPUs." >/dev/stderr
echo >/dev/stderr
for cpu in $CPUS; do
gov_file=/sys/devices/system/cpu/$cpu/cpufreq/scaling_governor
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
rm -f $save_file
if [ -e $gov_file ]; then
cat $gov_file > $save_file
echo ondemand > $gov_file
fi
done
fi
# Enable AC97 audio power saving
[ -e /sys/module/snd_ac97_codec/parameters/power_save ] && echo Y > /sys/module/snd_ac97_codec/parameters/power_save
# Disable HAL polling of CDROMS
cddrives=$(command ls -1 /dev/scd* 2>/dev/null)
for i in $cddrives; do hal-disable-polling --device $(readlink -f $i); done &>/dev/null
# Enable power saving mode for Wi-Fi cards
for i in /sys/bus/pci/devices/*/power_level ; do echo 5 > $i ; done > /dev/null 2>&1
# Set reduced FSB on EEE PCs with Inte Atom
if [ -e /sys/devices/platform/eeepc/she ]; then
echo 2 > /sys/devices/platform/eeepc/she
elif [ -e /sys/devices/platform/eeepc/cpufv ]; then
echo 2 > /sys/devices/platform/eeepc/cpufv
fi
set_disk_alpm min_power
#enable_usb_autosuspend
enable_cpu_multicore_powersave
set_cpu_governor ondemand
enable_snd_ac97_powersave
disable_cd_polling
enable_wifi_powersave
eee_set_reduced_fsb
return 0
}
stop() {
set_alpm "max_performance"
# Disables USB autosuspend for all devices
#for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 0 > $i; done > /dev/null 2>&1
# Disables multi core power savings for low wakeup systems
[ -e /sys/devices/system/cpu/sched_mc_power_savings ] && echo 0 > /sys/devices/system/cpu/sched_mc_power_savings
# Revert previous CPU governor
if [ -e $CPUSPEED_INIT ]; then
if [ -e $CPUSPEED_SAVE_FILE ]; then
cp -fp $CPUSPEED_SAVE_FILE $CPUSPEED_CFG
rm -f $CPUSPEED_SAVE_FILE
fi
if [ -e $CPUSPEED_STARTED ]; then
rm -f $CPUSPEED_STARTED
service cpuspeed stop >/dev/null 2>&1
else
service cpuspeed restart >/dev/null 2>&1
fi
else
for cpu in $CPUS; do
cpufreq_dir=/sys/devices/system/cpu/$cpu/cpufreq
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
if [ -e $cpufreq_dir/scaling_governor ]; then
if [ -e $save_file ]; then
cat $save_file > $cpufreq_dir/scaling_governor
rm -f $save_file
else
echo userspace > $cpufreq_dir/scaling_governor
cat $cpufreq_dir/cpuinfo_max_freq > $cpufreq_dir/scaling_setspeed
fi
fi
done
fi
# Enable AC97 audio power saving
[ -e /sys/module/snd_ac97_codec/parameters/power_save ] && echo Y > /sys/module/snd_ac97_codec/parameters/power_save
# Enable HAL polling of CDROMS
cddrives=$(command ls -1 /dev/scd* 2>/dev/null)
for i in $cddrives; do hal-disable-polling --enable-polling --device $(readlink -f $i); done &>/dev/null
# Reset power saving mode for Wi-Fi cards
for i in /sys/bus/pci/devices/*/power_level ; do echo 0 > $i ; done > /dev/null 2>&1
# Set normal FSB on EEE PCs with Inte Atom
if [ -e /sys/devices/platform/eeepc/she ]; then
echo 1 > /sys/devices/platform/eeepc/she
elif [ -e /sys/devices/platform/eeepc/cpufv ]; then
echo 1 > /sys/devices/platform/eeepc/cpufv
fi
set_disk_alpm max_performance
#disable_usb_autosuspend
disable_cpu_multicore_power_savings
restore_cpu_scheduler
enable_snd_ac97_powersave
enable_cd_polling
disable_wifi_powersave
eee_set_normal_fsb
return 0
}
reload() {
start
}
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,120 +1,17 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
CPUSPEED_SAVE_FILE="/var/run/tuned/ktune-cpuspeed.save"
CPUSPEED_ORIG_GOV="/var/run/tuned/ktune-cpuspeed-governor-%s.save"
CPUSPEED_STARTED="/var/run/tuned/ktune-cpuspeed-started"
CPUSPEED_CFG="/etc/sysconfig/cpuspeed"
CPUSPEED_INIT="/etc/init.d/cpuspeed"
CPUS="$(ls -d1 /sys/devices/system/cpu/cpu* | sed 's;^.*/;;' | grep "cpu[0-9]\+")"
. /etc/tune-profiles/functions
start() {
# Enable performance CPU governor (prefer cpuspeed)
if [ -e $CPUSPEED_INIT ]; then
if [ ! -e $CPUSPEED_SAVE_FILE -a -e $CPUSPEED_CFG ]; then
cp -p $CPUSPEED_CFG $CPUSPEED_SAVE_FILE
sed -e 's/^GOVERNOR=.*/GOVERNOR=performance/g' $CPUSPEED_SAVE_FILE > $CPUSPEED_CFG
fi
service cpuspeed status >/dev/null 2>&1
[ $? -eq 3 ] && touch $CPUSPEED_STARTED || rm -f $CPUSPEED_STARTED
service cpuspeed restart >/dev/null 2>&1
else
echo >/dev/stderr
echo "Suggestion: install 'cpuspeed' package to get best performance and latency." >/dev/stderr
echo "Falling back to 'performance' scaling governor for all CPUs." >/dev/stderr
echo >/dev/stderr
for cpu in $CPUS; do
gov_file=/sys/devices/system/cpu/$cpu/cpufreq/scaling_governor
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
rm -f $save_file
if [ -e $gov_file ]; then
cat $gov_file > $save_file
echo performance > $gov_file
fi
done
fi
set_cpu_governor performance
return 0
}
stop() {
# Re-enable previous CPU governor
if [ -e $CPUSPEED_INIT ]; then
if [ -e $CPUSPEED_SAVE_FILE ]; then
cp -fp $CPUSPEED_SAVE_FILE $CPUSPEED_CFG
rm -f $CPUSPEED_SAVE_FILE
fi
if [ -e $CPUSPEED_STARTED ]; then
rm -f $CPUSPEED_STARTED
service cpuspeed stop >/dev/null 2>&1
else
service cpuspeed restart >/dev/null 2>&1
fi
else
for cpu in $CPUS; do
cpufreq_dir=/sys/devices/system/cpu/$cpu/cpufreq
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
if [ -e $cpufreq_dir/scaling_governor ]; then
if [ -e $save_file ]; then
cat $save_file > $cpufreq_dir/scaling_governor
rm -f $save_file
else
echo userspace > $cpufreq_dir/scaling_governor
cat $cpufreq_dir/cpuinfo_max_freq > $cpufreq_dir/scaling_setspeed
fi
fi
done
fi
restore_cpu_governor
return 0
}
reload() {
start
}
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,85 +1,19 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
ALPM="min_power"
set_alpm() {
for x in /sys/class/scsi_host/*; do
if [ -f $x/ahci_port_cmd ]; then
port_cmd=`cat $x/ahci_port_cmd`;
if [ $((0x$port_cmd & 0x240000)) = 0 -a -f $x/link_power_management_policy ]; then
echo $1 >$x/link_power_management_policy;
else
echo "max_performance" >$x/link_power_management_policy;
fi
fi
done
}
. /etc/tune-profiles/functions
start() {
set_alpm ${ALPM}
# Disable HAL polling of CDROMS
cddrives=$(command ls -1 /dev/scd* 2>/dev/null)
for i in $cddrives; do hal-disable-polling --device $(readlink -f $i); done &>/dev/null
set_disk_alpm min_power
disable_cd_polling
return 0
}
stop() {
set_alpm "max_performance"
# Enable HAL polling of CDROMS
cddrives=$(command ls -1 /dev/scd* 2>/dev/null)
for i in $cddrives; do hal-disable-polling --enable-polling --device $(readlink -f $i); done &>/dev/null
set_disk_alpm max_performance
enable_cd_polling
return 0
}
# Reload it, just start once more
reload() {
start
}
# Status
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,146 +1,40 @@
#!/bin/sh
# Author of original script: Daniel Mach
# Rewrite into profiles by: Marcela Mašláňová
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
. /etc/tune-profiles/functions
ALPM="medium_power"
# Set ALPM for all host adapters that support it
set_alpm() {
for x in /sys/bus/scsi/devices/host*/scsi_host/host*/; do
hotplug="0"
if [ -e $x/sata_hotplug ]; then
hotplug="$(cat $x/sata_hotplug)"
fi
if [ "$hotplug" == "0" -a -e $x/link_power_management_policy ]; then
echo $1 > $x/link_power_management_policy
fi
done
}
remount() {
OPTS=$1
mount | grep 'type ext3 (' | while read LINE; do
DEV=$(echo $LINE | sed 's@^\(.*\) on .* type .*$@\1@')
MNT=$(echo $LINE | sed 's@^.* on \(.*\) type .*$@\1@')
mount -o remount,$1 $DEV $MNT
done
}
hdd_apm() {
APM=$1
for DEV in /dev/[sh]d[a-z]; do
hdparm -B $APM $DEV >/dev/null 2>&1
done
}
hdd_spindown() {
SPINDOWN=$1
for DEV in /dev/[sh]d[a-z]; do
hdparm -S $SPINDOWN $DEV >/dev/null 2>&1
done
}
wireless_powersave() {
POWER=$1
IFACES=$(cat /proc/net/wireless | grep -v '|' | sed 's@^ *\([^:]*\):.*@\1@')
for IFACE in $IFACES; do
iwpriv $IFACE set_power $POWER
done
}
dont_sync_logs() {
cp -p /etc/rsyslog.conf /etc/rsyslog.conf.bckp
sed 's/ \/var\/log/-\/var\/log/' /etc/rsyslog.conf.bckp > /etc/rsyslog.conf
}
revert_logs() {
mv /etc/rsyslog.conf.bckp /etc/rsyslog.conf
}
EXT_PARTITIONS=$(mount | grep -E "type ext(3|4)" | cut -d" " -f1)
start() {
# redirect cron to tty8 isn't probably needed anymore
set_disk_alpm medium_power
set_disk_apm 128
set_disk_spindown 6
set_alpm ${ALPM}
# Enables USB autosuspend for all devices
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i; done
# Disable HAL polling of CDROMS
cddrives=$(command ls -1 /dev/scd* 2>/dev/null)
for i in $cddrives; do hal-disable-polling --device $(readlink -f $i); done &>/dev/null
hciconfig hci0 down; modprobe -r hci_usb
dont_sync_logs
wireless_powersave 1
hdd_spindown 6
hdd_apm 128
remount commit=600,noatime
find /etc/ >/dev/null 2>&1
enable_usb_autosuspend
disable_cd_polling
disable_bluetooth
enable_wifi_powersave
disable_logs_syncing
remount_partitions commit=600,noatime $EXT_PARTITIONS
find /etc/ &> /dev/null
sync
return 0
}
# Disable ALPM for all host adapters that support it
stop() {
set_alpm "max_power"
modprobe hci_usb; hciconfig hci0 up
wireless_powersave 0
revert_logs
hdd_spindown 0
hdd_apm 255
remount commit=5
set_disk_alpm max_power
set_disk_apm 255
set_disk_spindown 0
disable_usb_autosuspend
enable_bluetooth
disable_wifi_powersave
restore_logs_syncing
remount_partitions commit=5 $EXT_PARTITIONS
return 0
}
# Reload it, just start once more
reload() {
start
}
# Status
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@

View file

@ -1,135 +1,19 @@
#!/bin/sh
VAR_SUBSYS_KTUNE="/var/lock/subsys/ktune"
CPUSPEED_SAVE_FILE="/var/run/tuned/ktune-cpuspeed.save"
CPUSPEED_ORIG_GOV="/var/run/tuned/ktune-cpuspeed-governor-%s.save"
CPUSPEED_STARTED="/var/run/tuned/ktune-cpuspeed-started"
CPUSPEED_CFG="/etc/sysconfig/cpuspeed"
CPUSPEED_INIT="/etc/init.d/cpuspeed"
CPUS="$(ls -d1 /sys/devices/system/cpu/cpu* | sed 's;^.*/;;' | grep "cpu[0-9]\+")"
THP_ENABLE="/sys/kernel/mm/redhat_transparent_hugepage/enabled"
THP_SAVE="/var/run/tuned/ktune-thp.save"
. /etc/tune-profiles/functions
start() {
# Enable performance CPU governor (prefer cpuspeed), if freq scaling is supported
if [ -e $CPUSPEED_INIT ]; then
if [ ! -e $CPUSPEED_SAVE_FILE -a -e $CPUSPEED_CFG ]; then
cp -p $CPUSPEED_CFG $CPUSPEED_SAVE_FILE
sed -e 's/^GOVERNOR=.*/GOVERNOR=performance/g' $CPUSPEED_SAVE_FILE > $CPUSPEED_CFG
fi
service cpuspeed status >/dev/null 2>&1
[ $? -eq 3 ] && touch $CPUSPEED_STARTED || rm -f $CPUSPEED_STARTED
service cpuspeed restart >/dev/null 2>&1
elif [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
echo >/dev/stderr
echo "Suggestion: install 'cpuspeed' package to get best performance and latency." >/dev/stderr
echo "Falling back to 'performance' scaling governor for all CPUs." >/dev/stderr
echo >/dev/stderr
for cpu in $CPUS; do
gov_file=/sys/devices/system/cpu/$cpu/cpufreq/scaling_governor
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
rm -f $save_file
if [ -e $gov_file ]; then
cat $gov_file > $save_file
echo performance > $gov_file
fi
done
fi
# Make sure transparent hugepages are enabled (if supported)
if [ -e $THP_ENABLE ]; then
cut -f2 -d'[' $THP_ENABLE | cut -f1 -d']' > $THP_SAVE
(echo always > $THP_ENABLE) > /dev/null 2>&1
fi
set_cpu_governor performance
enable_transparent_hugepages
return 0
}
stop() {
# Re-enable previous CPU governor
if [ -e $CPUSPEED_INIT ]; then
if [ -e $CPUSPEED_SAVE_FILE ]; then
cp -fp $CPUSPEED_SAVE_FILE $CPUSPEED_CFG
rm -f $CPUSPEED_SAVE_FILE
fi
if [ -e $CPUSPEED_STARTED ]; then
rm -f $CPUSPEED_STARTED
service cpuspeed stop >/dev/null 2>&1
else
service cpuspeed restart >/dev/null 2>&1
fi
elif [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
for cpu in $CPUS; do
cpufreq_dir=/sys/devices/system/cpu/$cpu/cpufreq
save_file=$(printf $CPUSPEED_ORIG_GOV $cpu)
if [ -e $cpufreq_dir/scaling_governor ]; then
if [ -e $save_file ]; then
cat $save_file > $cpufreq_dir/scaling_governor
rm -f $save_file
else
echo userspace > $cpufreq_dir/scaling_governor
cat $cpufreq_dir/cpuinfo_max_freq > $cpufreq_dir/scaling_setspeed
fi
fi
done
fi
# Restore transparent hugepages setting
if [ -e $THP_SAVE ]; then
(echo $(cat $THP_SAVE) > $THP_ENABLE) > /dev/null 2>&1
rm -f $THP_SAVE
fi
restore_cpu_governor
restore_transparent_hugepages
return 0
}
reload() {
start
}
status() {
return 0
}
case "$1" in
start)
[ -f "$VAR_SUBSYS_KTUNE" ] && exit 0
start
RETVAL=$?
;;
stop)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
RETVAL=$?
;;
reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && reload
RETVAL=$?
;;
restart|force-reload)
[ -f "$VAR_SUBSYS_KTUNE" ] && stop
start
RETVAL=$?
;;
condrestart|try-restart)
[ -f "$VAR_SUBSYS_KTUNE" ] || exit 0
stop
start
RETVAL=$?
;;
status)
status
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=2
;;
esac
process $@