Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/07/2005, à 23:09

Loïc

powernowd et cpuspeedy...

Bonsoir,

Par défaut Ubuntu utilise "powernowd" pour contrôler la vitesse du processeur selon sa charge.

Je préfere utiliser "cpuspeedy" pour fixer une vitesse mais le problème c'est qu'ils ne font pas bon ménage, j'ai donc essayé de le désinstaller (powernowd) mais après un redémarrage j'ai remarqué que je ne pouvais plus contrôler la vitesse.


Il senble que le fichier d'initialisation de "powernowd" charge des modules nécessaires au contrôle du processeur.

J'aimerai donc modifier ce script de façon à ce que les modules importants se charge sauf "powernowd". Mais je dois avouer que je ne comprends pas trop le contenu de son script d'initialisation :

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/powernowd
NAME=powernowd
DESC=powernowd

test -x $DAEMON || exit 0

# create the file /etc/default/powernowd if you want to override the value of
# variable OPTIONS and change the default behavior of the daemon as launched

OPTIONS="-q"
[ -f /etc/default/$NAME ] && . /etc/default/$NAME

# Get lsb functions
. /lib/lsb/init-functions
. /etc/default/rcS

if [ "x$VERBOSE" = "xno" ]; then
        MODPROBE_OPTIONS="$MODPROBE_OPTIONS -Q"
        export MODPROBE_OPTIONS
fi

set -e

fallback() {
        modprobe speedstep-smi||(modprobe acpi-cpufreq||true)
}

load_modules() {
        #stop the kernel printk'ing at all while we load.
        PRINTK=`cat /proc/sys/kernel/printk`
        [ "$VERBOSE" = no ] && echo "0 0 0 0" > /proc/sys/kernel/printk
        
        #build a list of current modules so we don't load a module twice
        LIST=`/sbin/lsmod|awk '!/Module/ {print $1}'`
        
        #get list of available modules
        LOC="/lib/modules/`uname -r`/kernel/drivers/cpufreq"
        if [ -d $LOC ]; then
          MODAVAIL=`( find $LOC -type f -name "*.o" -printf "basename %f .o\n"; \
                   find $LOC -type f -name "*.ko" -printf "basename %f .ko\n" ) | /bin/sh`
        else
          MODAVAIL=""
        fi

        
        #echo "Loading cpufreq modules:"
        for mod in $MODAVAIL; do
        #        echo "     $mod"
                echo $LIST| grep -q -w "$mod" || modprobe $mod >/dev/null || /bin/true
        done
        
        #cpufreq is built in on powerpc; just return
        if [ "`uname -m`" = "ppc" ]; then
                return 0
        fi


        #new style detection system
        if [ ! "$FREQDRIVER" = "" ]; then 
                modprobe "$FREQDRIVER"||fallback
        else
                FREQDRIVER=$(/usr/share/powernowd/cpufreq-detect.sh)
                [ ! -z "$FREQDRIVER" ] && (modprobe "$FREQDRIVER"||fallback)

        fi

        if [ "$USE_OLD_DETECT" = "fish" ]; then
        # now lets load the driver
        if [ ! $FREQDRIVER = "" ]; then 
                modprobe $FREQDRIVER||true
        fi
        if [ "`uname -m`" = "x86_64" ]; then 
                modprobe powernow-k8 >/dev/null 2>&1||true
        fi

        if [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
                modprobe acpi > /dev/null 2>&1|| true
        fi
        fi
        echo "$PRINTK" > /proc/sys/kernel/printk
}

check_kernel() {
	CPUFREQ=/sys/devices/system/cpu/cpu0/cpufreq

	if [ -f "$CPUFREQ/scaling_governor" ] && \
		[ -f "$CPUFREQ/scaling_available_governors" ] && \
		grep -q userspace "$CPUFREQ/scaling_available_governors"
	then
		return 0
	else
		return 1
	fi
}

start() {
       	log_begin_msg "Starting $DESC... "
	if check_kernel
	then
	#       echo "Starting $DESC: "
		if ! start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- $OPTIONS >/dev/null 2>&1; then
			status=$?
			log_end_msg $status
			return $status
		fi
	else
		log_success_msg "CPU frequency scaling not supported"
	#	echo "required sysfs objects not found!"
	#	echo -e "\tRead /usr/share/doc/powernowd/README.Debian for more information."
	fi
       	log_end_msg 0
	return 0
}

case "$1" in
  start)
        [ -f /proc/modules ] && load_modules
	start
	;;
  stop)
	log_begin_msg "Stopping $DESC: "
	start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
	log_end_msg $?
	;;
  restart|force-reload)
        $0 stop
	sleep 1
	start
	#echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	log_success_msg "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0

Si quelqu'un pouvait me dire comment faire à partir de ce script un autre qui puisse charger les modules nécessaire au contrôle du processeur, pour que je puisse par la suite désinstaller "powernowd", ça serait bien smile.

Merci...

Hors ligne

#2 Le 17/07/2005, à 20:57

Loïc

Re : powernowd et cpuspeedy...

Bonsoir,

J'ai fini par trouver. smile

En fait, pour faire varier la vitesse du processeur il suffit que les modules "freq_table", "cpufreq_userspace" et "speedstep_centrino" soient chargés. Il faut donc les rajouter dans /etc/modules, après on peut désinstaller "powernowd" et le remplacer par "cpuspeedy" ou "cpufreqd".

Hors ligne

#3 Le 17/07/2005, à 21:12

tomtom

Re : powernowd et cpuspeedy...

[Résolu] !!!

Hors ligne