18.04 में प्रदर्शन के लिए CPU गवर्नर सेट करें


25

मैं 18.04 में सीपीयू गवर्नर को प्रदर्शन के लिए सेट करने की कोशिश कर रहा हूं, समस्या यह है कि यह कभी भी रिबूट नहीं बचता है।

मैंने इस प्रश्न के उत्तर में इन चरणों का पालन करने की कोशिश की है "डिफ़ॉल्ट" के बजाय "प्रदर्शन" को डिफ़ॉल्ट के रूप में कैसे सेट करें? लेकिन जब मैं कंप्यूटर को रिबूट करता हूं तो सीपीयू गवर्नर वापस पॉवरस्वर पर लौट जाता है।

मैंने /etc/rc.localलाइन के साथ फाइल बनाने की कोशिश भी की है :

cpupower frequency-set --governor performance

वह भी रिबूट नहीं बचता है।

मैं यह कैसे कर सकता हूँ?


3
आपने वास्तव में क्या प्रक्रिया अपनाई? क्या /etc/rc.localकेवल इस प्रश्न में फ़ाइल नाम में टाइपो है , या आपने इसे बनाते समय वही टाइपो बनाया था? यह प्रश्न 18.04 के लिए विशिष्ट नहीं हो सकता है और शायद यहाँ एक प्रश्न के बजाय एक बग रिपोर्ट नहीं होनी चाहिए। मुझे लगता है कि प्रश्न को फिर से खोलने पर विचार किया जा सकता है यदि आप इसे और अधिक विवरण जोड़ने के लिए संपादित करते हैं।
Zanna

पैरामीटर --governor powersaveहोना चाहिए --governor performance...
WinEunuuchs2Unix

मैंने इस कमांड लिस्ट का अनुसरण किया , लेकिन जब मैं कंप्यूटर को रिबूट करता हूं तो सीपीयू गवर्नर वापस पावरस्वर में आ जाता है। मुझे नहीं पता था /etc/rc.local आदेश में कोई गलती नहीं है, मुझे मिल गया है कि एक और askubuntu पद से यहाँ जब मैं आदेश 'cpupower आवृत्ति सेट --governor प्रदर्शन' पर चलाने के लिए एक स्क्रिप्ट करने की कोशिश की चालू होना।
फेकल


हाँ, मैंने उस धागे का अनुसरण करने की कोशिश की है, मुझे यह संदेश मिलता है: j @ j-ncase: ~ $ sudo update-rc.d ondemand अक्षम
अपडेट-

जवाबों:


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

4
दरअसल, बस आखिरी कमांड ही काफी है। बाद sudo systemctl disable ondemandऔर रिबूट: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorशो performance
यलोक Iy

6

संक्षिप्त जवाब

/etc/rc.localइन आदेशों में रखा गया है:

sleep 120
cpupower frequency-set --governor performance

पॉवर्स में बूट ऑटोमैटिक स्विच के 1 मिनट बाद

जो भी कारणों से मेरा स्काईलेक इंटेल सीपीयू हमेशा प्रदर्शन मोड में शुरू होता है और फिर स्वचालित रूप से 1 मिनट के निशान पर पॉवर्सवेव मोड में स्विच होता है।

आप के लिए मोड सेट करते हैं प्रदर्शन स्टार्टअप पर यह 1 मिनट के आसपास ओवरराइड कर दिया जाएगा ऊपर समय के निशान powersave मोड पर ।

नीचे GIF में, स्टार्ट अप में 3000+ मेगाहर्ट्ज सीपीयू की गति शीर्ष के पास दिखाई देती है। ऊपर का समय नीचे के पास दिखाई देता है। जब अप टाइम 1 मिनट के बारे में हिट करता है तो आप सीपीयू मेगाहर्ट्ज को छोड़ देते हैं। :

सीपीयू 1 मिनट 2.gif पर पॉवरवेव जाता है


सटीक दूसरे पॉवर्सवेव पर निगरानी रखने का कार्यक्रम

इस स्क्रिप्ट में बनाएँ /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

में स्क्रिप्ट कॉल /etc/rc.localसे पहलेexit 0कमांड (नीचे विस्तार से बताया गया है)।

आउटपुट को देखने के एक मिनट बाद:

$ 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

इस उत्तर की पुष्टि में कहा गया है कि powersaveराज्यपाल को यह 1 मिनट का बल नियंत्रित है /etc/init.d/ondemand


प्रदर्शन मोड सेट करने से पहले 120 सेकंड की नींद लें

प्रदर्शन मोड में रहने का सबसे सरल तरीका /etc/rc.localइन पंक्तियों को अंतिम पंक्ति से पहले संपादित करना और सम्मिलित करना है exit 0:

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

फ़ाइल सहेजें और रिबूट करें।

यदि आप नई लाइनों को डालने के बाद exit 0इसे कभी भी निष्पादित नहीं करेंगे।


चेतावनियां

आपकी मशीन संभवतः 10 से 15 डिग्री C हॉटटर चलाएगी।

यदि आप अपनी प्रदर्शन सेटिंग को ओवरराइड करते हैं, तो आपको सीपीयू फ्रीक्वेंसी को बदलने वाले अन्य कार्यक्रमों को हटाने की आवश्यकता हो सकती है /etc/rc.local


कौन सा पैकेज है cpupowerऔर कौन सा GUI आपके पास है? मैं एक राइज़ेन 7 को ट्यून करने की कोशिश कर रहा हूं, cpufreq-utilsलेकिन यह प्रदर्शन गवर्नर के साथ भी सुस्त लगता है
Csaba Toth

@CsabaToth मैं उपयोग Conky प्रदर्शन सीपीयू, रैम, हार्ड, SDD, नेटवर्क और अन्य सिस्टम विवरण के लिए। आपको cpupower की आवश्यकता नहीं है लेकिन यह cpufrequtilsपैकेज का हिस्सा है । यदि सिस्टम सुस्त है , तो डिफ़ॉल्ट Gnome डेस्कटॉप के बजाय यूनिटी डेस्कटॉप आज़माएं ।
विनयुनुच्स

@ WinEunuchs2Unix धन्यवाद, मैंने कभी कॉनकी के बारे में नहीं सुना है, और यह मेरे सिस्टम पर स्थापित किया गया था। मैं Xfce4 के साथ Devuan BTW चला रहा हूं। तो कॉंकी का कहना है कि मेरी सीपीयू फ्रीक्वेंसी 550 मेगाहर्ट्ज (0.55 गीगाहर्ट्ज़) है, जो सुस्ती की व्याख्या करती है और जो मुझे उम्मीद है, cpufreq-infoवह 3.2 गीगाहर्ट्ज़ बताती है और मैं performanceगवर्नर को मजबूर कर रहा हूं । मुझे इसके लिए एक प्रश्न खोलने की आवश्यकता है।
सेसाबा तोथ

4

डिफ़ॉल्ट उबंटू कर्नेल विन्यास ऐसे हैं कि बूट के दौरान प्रदर्शन CPU आवृत्ति स्केलिंग गवर्नर का उपयोग किया जाएगा। कर्नेल कॉन्फ़िगरेशन फ़ाइल का प्रासंगिक खंड ( /boot/config-4.15.0-36-genericइस उदाहरण में) है:

#
# 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

लेकिन बूट अप के दौरान भी डिफ़ॉल्ट रूप से ondemandसेवा निष्पादित की जाती है। यह 1 मिनट के लिए सोता है और फिर उपलब्धता के आधार पर स्केलिंग गवर्नर को या तो बदल देता है interactive, ondemandया powersave। बदले में उपलब्धता इस बात पर निर्भर करती है कि आप किस सीपीयू फ्रीक्वेंसी स्केलिंग ड्राइवर का उपयोग कर रहे हैं। कोड है (कई स्थानों में, खोज करें 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

इसे "ondemand" क्यों कहा जाता है, लेकिन यह अन्य राज्यपालों को सेट करता है (उदाहरण के लिए Intel_pstate ड्राइवर के साथ यह पॉवरवेव गवर्नर सेट करेगा)? क्योंकि यह उपकरण Intel_pstate ड्राइवर को पूर्व-दिनांकित करता है, एक समय पहले, जब तक, प्रभावी आवृत्ति स्केलिंग ड्राइवर acpi-cpufreq ड्राइवर था, और "ondemand" पसंदीदा Ubuntu डिफ़ॉल्ट गवर्नर था।

इसलिए, बूट करने और प्रदर्शन CPU आवृत्ति स्केलिंग गवर्नर के उपयोग से बने रहने का एक तरीका उस सेवा को अक्षम करना है जो इससे दूर हो जाती है (जिसका दूसरे उत्तर में भी उल्लेख किया गया था):

इससे पहले:

~$ 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

सेवा को अक्षम करें:

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

फिर से बूट करें, फिर से जांचें (फिर से बूट के बाद एक मिनट इंतजार करना सुनिश्चित करें):

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

नोट: इस उत्तर में उदाहरण एक कंप्यूटर से हैं जो acpi-cpufreq CPU आवृत्ति स्केलिंग ड्राइवर का उपयोग करता है। यदि आप Intel_pstate ड्राइवर का उपयोग कर रहे हैं, जिसमें कोई ondandand गवर्नर नहीं है, तो पॉवरसेव गवर्नर डिफ़ॉल्ट रूप से उपयोग किया जाएगा।

प्रत्याशित प्रश्न: प्रदर्शन राज्यपाल का उपयोग करते हुए भी मेरे CPU आवृत्तियों को स्केल क्यों किया जाता है?

उत्तर: आधुनिक प्रोसेसर सीपीयू फ्रीक्वेंसी को स्केल करते हैं, प्रदर्शन मोड में भी और निष्क्रिय अवस्था की गहराई के एक फंक्शन के रूप में। यदि आप वास्तव में CPU फ्रीक्वेंसी को लॉक करना चाहते हैं तो सभी निष्क्रिय अवस्थाओं को 0. से अधिक गहरा डिसेबल कर दें। हालाँकि, ध्यान दें कि इसमें भारी मात्रा में बिजली खर्च होगी।

व्यक्तिगत रूप से, और जैसा कि एक अन्य उत्तर में उल्लेख किया गया है, मैं प्रदर्शन राज्यपाल या पावरसेव गवर्नर का उपयोग करता हूं जो भी काम कर रहा हूं। मेरी स्क्रिप्ट थोड़ी अलग हैं:

$ 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

तथा:

$ 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

उदाहरण का उपयोग (Intel_pstate ड्राइवर का उपयोग कर कंप्यूटर पर):

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

2

मैंने जो किया वह फ़ाइल /etc/rc.local का उपयोग करना था

अपने रास्तों को खोजने में मदद करने के लिए, उपयोग करें:

find / -name scaling_governor
find / -name scaling_max_freq

यह मेरे सेटअप के लिए काम करता है, लेकिन आपको इसे अपने सेटअप के लिए संपादित करने की आवश्यकता है

मैंने नैनो का उपयोग करके /etc/rc.local में जोड़ा:

# 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

सीधे शेबंग लाइन के नीचे। बचाने के लिए Ctrl-X और Y के साथ नैनो को बंद करें

फिर कमांड लाइन रन पर 18.04 (16.04 पर काम नहीं हो सकता है) के लिए:

systemctl disable ondemand

फिर कमांड लाइन पर - /etc/rc.local पढ़ें और फिर रिबूट करें:

/etc/rc.local
reboot

यदि /etc/rc.local चोक और त्रुटियां हैं, तो सुनिश्चित करें कि यह chmod + x /etc/rc.local है


एक अन्य चीज जो मैं करता हूं वह है /etc/init.d/ondemand या ondemand को संपादित करने के लिए इसे अक्षम करने के लिए ondemandzzz पर ले जाने की आवश्यकता है। राज्यपाल को सेट करने से पहले /etc/init.d/ondemand में एक नींद 60 है। भले ही r.local इसे बूट समय पर प्रदर्शन में बदल देगा, 60 सेकंड बाद /etc/init.d/onditand द्वारा इसे बदल दिया जाता है। /Etc/init.d/ondemand में लाइन बदलें: echo -n $ GOVERNOR> $ CPUFREQ to: echo -n "performance"> $ CPUFREQ अगर आप /etc/init.d/ondemand को काम में रखने का निर्णय लेते हैं ...
WesZ

1

मैं 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

बनाओ निष्पादन योग्य है chmod +x cpu.shऔर किसी भी समय आपको चलाने की आवश्यकता है (कभी-कभी हर कंप्यूटर के शुरू होने के बाद / रिबूट करें)।


0

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मेरे मामले में मैं गवर्नर को 'शेड्यूल ’पर सेट करना चाहता था, लेकिन एक रिबूट के बाद मैं गवर्नर को हमेशा or ऑनडेमैंड’ पाता रहूंगा। मैंने बिना किसी लाभ के यहाँ प्रस्तुत अधिकांश समाधानों को पढ़ा और देखा।

मेरे लिए क्या चाल चली, और मैं उबंटू मेट का उपयोग कर रहा हूँ 18.04.2 फ़ाइल ढूंढ रहा था:

/ Lib / systemd / सेट cpufreq

लाइनों को सम्मिलित करने के लिए इसका संपादन:

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

तो अब फ़ाइल पढ़ता है:

    #! /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.

और अब जब मैं अपना कंप्यूटर बूट करता हूं तो यह 'शेड्यूलिट' गवर्नर के साथ शुरू होता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.