51 votes

Définissez le gouverneur du CPU sur performance dans 18.04

Je suis en train d'essayer de définir le gouverneur CPU sur performance dans 18.04, le problème est qu'il ne survit jamais aux redémarrages.

J'ai essayé de suivre ces étapes dans une réponse à cette question Comment définir "Performance" au lieu de "Powersave" par défaut? mais lorsque je redémarre l'ordinateur, le gouverneur CPU revient à powersaver.

J'ai également essayé de créer un fichier appelé /etc/rc.local avec la ligne :

cpupower frequency-set --governor performance

Cela ne survit pas non plus aux redémarrages.

Comment puis-je faire cela?

1voto

Vulto Points 11

J'ai eu un problème similaire. Dans mon cas, je voulais définir le gouverneur sur 'schedutil', mais après un redémarrage je trouvais toujours le gouverneur sur 'ondemand'. J'ai lu et essayé la plupart des solutions présentées ici sans succès.

Ce qui a fonctionné pour moi, j'utilise Ubuntu Mate 18.04.2, a été de trouver le fichier :

/lib/systemd/set-cpufreq

et d'y insérer les lignes suivantes :

    *schedutil*)
            GOVERNOR="schedutil"
            break
            ;;

donc maintenant le fichier ressemble à ceci :

    #! /bin/sh
    # Définit le gouverneur de fréquence du processeur sur "ondemand"/"powersave" lorsqu'il est disponible
    set -eu

    FIRSTCPU=`cut -f1 -d- /sys/devices/system/cpu/online`
    AVAILABLE="/sys/devices/system/cpu/cpu$FIRSTCPU/cpufreq/scaling_available_governors"
    DOWN_FACTOR="/sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor"

    [ -f $AVAILABLE ] || exit 0

    read governors < $AVAILABLE
    case $governors in
            *interactive*)
                   GOVERNOR="interactive"
                   break
                   ;;
            *schedutil*)
                   GOVERNOR="schedutil"
                   break
                   ;;
            *ondemand*)
                   GOVERNOR="ondemand"
                   case $(uname -m) in
                           ppc64*)
                           SAMPLING=100
                   ;;
                   esac
                   break
                   ;;
            *powersave*)
                   GOVERNOR="powersave"
                   break
                   ;;
            *)
                   exit 0
                   ;;
    esac

    [ -n "${GOVERNOR:-}" ] || exit 0

    echo "Définit le planificateur $GOVERNOR pour tous les CPU"

    for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    do
            [ -f $CPUFREQ ] || continue
            echo -n $GOVERNOR > $CPUFREQ
    done
    if [ -n "${SAMPLING:-}" ] && [ -f $DOWN_FACTOR ]; then
            echo -n $SAMPLING > $DOWN_FACTOR
    fi.

maintenant lorsque je démarre mon ordinateur, il démarre avec le gouverneur 'schedutil'!

0voto

Aykut Bozkurt Points 1

Un script simple pour basculer entre le mode d'économie d'énergie et le mode performance. Vous pouvez essayer avec l'un des 'wrmsr' en commentant celui dans le script ci-dessous. Je ne sais pas pourquoi, mais écrire 0 dans le registre a bien fonctionné pour moi.

#!/bin/bash

# argument: powersave or performance
if [ $# != 1 ]
then
  echo "Vous devez spécifier le gouverneur du processeur CPU comme argument!"
  exit 1
fi

totalCPUs=$(lscpu | grep '^CPU(s):' | awk '{print $2}')

for (( cpuIndex=0; cpuIndex<$totalCPUs; cpuIndex++ ))
do
   echo "Optimisation du CPU $cpuIndex"
   cpufreq-set -c $cpuIndex -g $1
done

if [ $1 == "performance" ]
then
  modprobe msr
  valeurRegControl=$(rdmsr 0x1FC)
  #wrmsr 0x1FC $valeurRegControl
  wrmsr 0x1FC 0
fi

exit 0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X