CPU düzenleyiciyi 18.04'te performansa ayarlayın


25

CPU valisini 18.04'te performansa ayarlamaya çalışıyorum, sorun asla yeniden başlatılamıyor.

Ben bu soruya bir cevap aşağıdaki adımları denedim "Powersave" yerine "Performans" nasıl varsayılan olarak ayarlanır? ama bilgisayarı yeniden başlattığımda CPU valisi yeniden güç koruyucusuna dönüyor.

Ayrıca /etc/rc.localhat ile adlandırılan bir dosya oluşturmayı denedim :

cpupower frequency-set --governor performance

Bu aynı zamanda yeniden başlatılamaz.

Bunu nasıl yapabilirim?


3
Tam olarak hangi prosedürü izlediniz? Dosya adındaki yazım hatası /etc/rc.localyalnızca bu soruda mı yoksa oluştururken aynı yazım hatasını mı yaptınız? Bu soru 18.04'e özgü olmayabilir ve muhtemelen burada bir soru yerine bir hata raporu olmamalıdır. Daha fazla ayrıntı eklemek için düzenlerseniz, sorunun yeniden açılması düşünülebilir.
Zanna

Parametre --governor powersaveolmalıdır --governor performance...
WinEunuuchs2Unix

Ben takip Bu komut listesi, ama bilgisayarı yeniden başlattığınızda cpu vali GüçTasarrufuna döner. Ben /etc/rc.local komuta bir yazım hatası olduğunu fark etmedi, bende başka Ask Ubuntu görevinden burada ben çalıştırmak komut 'cpupower frekans set --governor performans' olması için bir komut dosyası yapmaya çalıştım başlamak.
Falc


Evet, bu konuyu takip etmeyi denedim, şu mesajı alıyorum: j @ j-ncase: ~ $ sudo update-rc.d ondemand update-rc.d'yi devre dışı bırak: hata: ondemand için bir LSB komut dosyası bulamıyorum
Falc

Yanıtlar:


18
sudo apt-get install cpufrequtils
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
sudo systemctl disable ondemand

4
Aslında, sadece son komut yeterlidir. Sonra sudo systemctl disable ondemandve yeniden başlat: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorgösterir performance.
Yalok Iy

6

Kısa cevap

In /etc/rc.localBu komutların şekilde koymuştur:

sleep 120
cpupower frequency-set --governor performance

Açılıştan 1 dakika sonra Powersave'e otomatik geçiş

Hangi nedenle olursa olsun, Skylake Intel CPU'm her zaman Performans modunda başlatılır ve ardından otomatik olarak 1 dakika işaretinde Güç Tasarrufu moduna geçer.

Modu başlangıçta Performans olarak ayarlarsanız, 1 dakikalık Çalışma Süresi işareti Güç Tasarrufu moduna çevrilir .

Aşağıdaki GIF'te, başlangıçta 3000+ MHz CPU hızı üstte görünür. Yukarı süre aşağıya doğru görünür. Çalışma süresi yaklaşık 1 dakikaya ulaştığında CPU MHz'in düştüğünü görürsünüz. :

CPU güç tasarrufu 1 dakika 2. gif


İstenen ikinci Powersave'i izleme programı

Bu betiği şurada oluştur /usr/local/bin/watch-gov.sh:

#! /bin/bash

# NAME: watch-gov.sh
# PATH: /usr/local/bin
# DESC: Set governnor to performance and watch for change
#       Ask Ubuntu question: /ubuntu/1021748/set-cpu-governor-to-performance-in-18-04/1084727#1084727
# CALL: called from `/etc/rc.local`
# DATE: Created Oct 18, 2018.

echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
last_gov=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
Uptime=$(uptime)
echo "watch-gov.sh: Set to performance at $Uptime " > /tmp/watch-gov.log

for ((i=0; i<300; i++)) ; do
    curr_gov=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
    if [ $last_gov != $curr_gov ] ; then
        last_gov=$curr_gov
        Uptime=$(uptime)
        echo "watch-gov.sh: Current governor: $last_gov Uptime: $Uptime" >> \
            /tmp/watch-gov.log
    fi
    sleep 1
done

Komuttan /etc/rc.localönce komut dosyasını çağırın exit 0(aşağıda ayrıntılı olarak açıklanmıştır).

Giriş yaptıktan bir dakika sonra çıktıya bakın:

$ cat /tmp/watch-gov.log
watch-gov.sh: Set to performance at  17:50:09 up 0 min,  0 users,  load average: 0.00, 0.00, 0.00 
watch-gov.sh: Current governor: powersave Uptime:  17:51:09 up 1 min,  1 user,  load average: 1.89, 0.62, 0.22

Bu cevabın onayı powersavevaliye bu 1 dakikalık kuvvet tarafından kontrol edilir /etc/init.d/ondemand.


Performans Modunu ayarlamadan önce 120 saniye uyuyun

Performans modunda kalmanın en basit yolu, /etc/rc.localbu satırları aşağıdakileri içeren son satırdan önce düzenlemek ve eklemektir exit 0:

sleep 120 # Give CPU startup routines time to settle.
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Dosyayı kaydedin ve yeniden başlatın.

Eğer yeni satırlar eklendikten sonra exit 0eklenirse.


Uyarılar

Makineniz muhtemelen 10 ila 15 derece C daha sıcak çalışacaktır.

Performans ayarlarınızı geçersiz kılarsa CPU frekansını değiştiren diğer programları kaldırmanız gerekebilir. /etc/rc.local


Hangi pakete sahip cpupowerve hangi animasyona sahipsin? Ben bir Ryzen 7 ile ayarlamaya çalışıyorum cpufreq-utilsama performans valisi ile bile halsiz hissediyorum
Csaba Toth

@CsabaToth Conky'yi CPU, RAM, HDD, SDD, Ağ ve diğer sistem ayrıntılarını görüntülemek için kullanıyorum. Cpupower'a ihtiyacınız yok ama cpufrequtilspaketin bir parçası . Sistem yavaşsa , varsayılan Gnome masaüstü yerine Unity masaüstünü deneyin .
WinEunuuchs2Unix

@ WinEunuchs2Unix teşekkürler, Conky'yi hiç duymadım ve sistemime kuruldu. Xfce4 ile Devuan BTW kullanıyorum. Conky, CPU frekansımın 550 MHz (0.55 GHz) olduğunu söylüyor, bu da halsizliği açıklıyor ve beklediğim şey ama cpufreq-info3.2 GHz diyor ve performancevaliyi zorluyorum . Bunun için bir Soru açmam gerek.
Csaba Toth

4

Varsayılan Ubuntu çekirdek yapılandırmaları, önyükleme sırasında performans CPU frekansı ölçeklendirme düzenleyicisinin kullanılacağı şekildedir. Çekirdek yapılandırma dosyasının ilgili bölümü ( /boot/config-4.15.0-36-genericbu örnekte):

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y

#
# CPU frequency scaling drivers
#
CONFIG_X86_INTEL_PSTATE=y
CONFIG_X86_PCC_CPUFREQ=y
CONFIG_X86_ACPI_CPUFREQ=y
CONFIG_X86_ACPI_CPUFREQ_CPB=y
CONFIG_X86_POWERNOW_K8=y
CONFIG_X86_AMD_FREQ_SENSITIVITY=m
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_P4_CLOCKMOD=m

Ancak önyükleme sırasında varsayılan olarak ondemandhizmet yürütülür. Bu 1 dakika boyunca uyur ve ardından ya ölçeklendirme vali değiştiren interactive, ondemandya da powersaveolmamasına bağlı. Buna karşılık kullanılabilirlik hangi CPU frekansı ölçeklendirme sürücüsünü kullandığınıza bağlıdır. Kod şöyledir (birden fazla konumda şunu arayın ondemand):

#! /bin/sh
### BEGIN INIT INFO
# Provides:          ondemand
# Required-Start:    $remote_fs $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Set the CPU Frequency Scaling governor to "ondemand"
### END INIT INFO

# Don't run if we're going to start an Android LXC container:
[ ! -f /etc/init/lxc-android-config.conf ] || exit 0

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

AVAILABLE="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
DOWN_FACTOR="/sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor"

case "$1" in
    start)
        start-stop-daemon --start --background --exec /etc/init.d/ondemand -- background
        ;;
    background)
        sleep 60 # probably enough time for desktop login

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

        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
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Neden "ondemand" olarak adlandırılır, ancak diğer valileri ayarlar (örneğin intel_pstate sürücüsü ile güç tasarrufu valisini ayarlayacaktır)? Bu araç, intel_pstate sürücüsünün önüne geçtiği için, baskın frekans ölçekleme sürücüsünün acpi-cpufreq sürücüsü olduğu ve "ondemand" ın tercih edilen Ubuntu varsayılan düzenleyicisi olduğu bir zamana kadar.

Bu nedenle, performans CPU frekansı ölçeklendirme düzenleyicisini kullanarak önyükleme yapmanın ve kalmanın bir yolu, kendisinden uzaklaşan hizmeti (başka bir cevapta da belirtilmiştir) devre dışı bırakmaktır:

Önce:

~$ systemctl list-units --all --type=service | grep ondemand
  ondemand.service                                      loaded    inactive dead    Set the CPU Frequency Scaling governor
~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
ondemand
ondemand

Hizmeti devre dışı bırakın:

~$ sudo systemctl disable ondemand
Removed /etc/systemd/system/multi-user.target.wants/ondemand.service.

yeniden önyükleme yapın, ardından tekrar kontrol edin (yeniden önyüklemeden sonra bir dakika beklediğinizden emin olun):

doug@s17:~$ systemctl list-units --all --type=service | grep ondemand
doug@s17:~$
doug@s17:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance
performance

Not: Bu yanıttaki örnekler, acpi-cpufreq CPU frekans ölçeklendirme sürücüsünü kullanan bir bilgisayardan alınmıştır. Intel_pstate sürücüsünü, isteğe bağlı ve vali olmadan kullanıyorsanız, güç tasarrufu valisi varsayılan olarak kullanılır.

Beklenen soru: Performans düzenleyicisini kullanırken bile CPU frekanslarım neden ölçekleniyor?

Yanıt: Modern işlemciler, performans modunda ve girdikleri boşta kalma durumunun derinliğinin bir fonksiyonu olarak bile CPU frekansını ölçeklendirir. CPU frekansını gerçekten kilitlemek istiyorsanız, 0'dan daha derin olan tüm boş durumları devre dışı bırakın. Ancak, bunun çok büyük miktarda güce mal olacağını unutmayın.

Şahsen ve başka bir cevapta belirtildiği gibi, performans düzenleyicisini veya güç tasarrufu düzenleyicisini yaptığım işin bir işlevi olarak kullanıyorum. Betiklerim biraz farklı:

$ cat set_cpu_performance
#! /bin/bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > $file; done

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

ve:

$ cat set_cpu_powersave
#! /bin/bash
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "powersave" > $file; done

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

örnek kullanım (intel_pstate sürücüsünü kullanan bir bilgisayarda):

$ sudo ./set_cpu_performance
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
performance
performance
performance
performance
performance
performance
performance
performance

2

Yaptığım /etc/rc.local dosyasını kullanmaktı

Yollarınızı bulmanıza yardımcı olması için şunu kullanın:

find / -name scaling_governor
find / -name scaling_max_freq

Bu, kurulumum için çalışıyor, ancak kurulumunuz için düzenlemeniz gerekiyor

Nano kullanarak /etc/rc.local dosyasına ekledim:

# Set CPU Governor and Freq at boot up
 echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
 echo 1500000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
 echo 2000000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
 echo "performance" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor

doğrudan shebang hattı altında. Kaydetmek için Nano'yu Ctrl-X ve Y ile kapatın

Sonra komut satırında 18.04 (16.04'te çalışmayabilir) için çalıştırın:

systemctl disable ondemand

Sonra komut satırında - /etc/rc.local adresini okuyun ve yeniden başlatın:

/etc/rc.local
reboot

/etc/rc.local şokları ve hataları varsa, chmod + x /etc/rc.local olduğundan emin olun


Yaptığım diğer bir şey ise /etc/init.d/ondemand veya ondemand öğelerini düzenlemek ve devre dışı bırakmak için ondemandzzz klasörüne taşınması. Valiyi ayarlamadan önce /etc/init.d/ondemand içinde 60 uyku var. Rc.local, önyükleme sırasında performansı değiştirecek olsa da, 60 saniye sonra /etc/init.d/ondemand tarafından değiştirilir. /Etc/init.d/ondemand'de satırı değiştirin: echo -n $ GOVERNOR> $ CPUFREQ değerini: echo -n "performance"> $ CPUFREQ /etc/init.d/ondemand'ın çalışmaya devam etmeye karar verirseniz ...
WesZ

1

Valiyi ayarlamak için bu bash betiğini kullanıyorum performance:

#!/bin/bash

sudo cpufreq-set --cpu 0 --governor performance
sudo cpufreq-set --cpu 1 --governor performance
sudo cpufreq-set --cpu 2 --governor performance
sudo cpufreq-set --cpu 3 --governor performance
sudo cpufreq-set --cpu 4 --governor performance
sudo cpufreq-set --cpu 5 --governor performance
sudo cpufreq-set --cpu 6 --governor performance
sudo cpufreq-set --cpu 7 --governor performance

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Make çalıştırılabilir chmod +x cpu.shve ihtiyacınız olan her zaman çalıştırılabilir (her bilgisayar başlatıldıktan / yeniden başlatıldıktan hemen sonra).


0

Benzer bir sorun yaşadım. Benim durumumda valiyi 'schedutil' olarak ayarlamak istedim, ama yeniden başlattıktan sonra valiyi her zaman 'ondemand' olarak bulurdum. Burada sunulan çoğu çözümü boşuna okudum ve denedim.

Benim için hile yaptı ve ben Ubuntu Mate 18.04.2 kullanıyorum dosyayı bulmak oldu:

/ Lib / systemd / set-cpufreq

satırları eklemek için düzenleme:

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

şimdi dosya okuyor:

    #! /bin/sh
    # Set the CPU Frequency Scaling governor to "ondemand"/"powersave"      where available
    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 "Setting $GOVERNOR scheduler for all CPUs"

    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.

ve şimdi bilgisayarımı başlattığımda 'schedutil' valisi ile başlıyor!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.