Đặt bộ điều khiển CPU thành hiệu suất trong 18.04


24

Tôi đang cố gắng thiết lập bộ điều khiển CPU thành hiệu suất trong 18.04, vấn đề là nó không bao giờ tồn tại khi khởi động lại.

Tôi đã thử làm theo các bước này để trả lời cho câu hỏi này Làm thế nào để đặt "Hiệu suất" thay vì "Powersave" làm mặc định? nhưng khi tôi khởi động lại máy tính, bộ điều khiển CPU sẽ chuyển trở lại máy phát điện.

Tôi cũng đã thử tạo một tệp được gọi /etc/rc.localbằng dòng:

cpupower frequency-set --governor performance

Điều đó cũng không tồn tại khởi động lại.

Tôi có thể làm cái này như thế nào?


3
Thủ tục chính xác bạn đã làm theo? Là lỗi đánh máy trong tên tệp /etc/rc.localchỉ trong câu hỏi này, hoặc bạn đã thực hiện cùng một lỗi đánh máy khi tạo nó? Câu hỏi này có thể không cụ thể cho 18.04 và có lẽ không nên là một báo cáo lỗi hơn là một câu hỏi ở đây. Tôi nghĩ rằng câu hỏi có thể được xem xét để mở lại nếu bạn chỉnh sửa nó để thêm chi tiết.
Zanna

Tham số --governor powersavenên là --governor performance...
WinEunuuchs2Unix

Tôi đã làm theo danh sách lệnh này , nhưng khi tôi khởi động lại máy tính, bộ điều khiển cpu sẽ chuyển trở lại quyền hạn. Tôi đã không nhận ra có một lỗi đánh máy trong lệnh /etc/rc.local, tôi đã nhận được nó từ một bài đăng trên Ubuntu khác ở đây khi tôi cố gắng tạo một tập lệnh để có lệnh 'cpupower tần số được đặt - hiệu suất của trình điều khiển' chạy tại khởi nghiệp.
Falc


Vâng, tôi đã thử theo chủ đề đó, tôi nhận được thông báo này: j @ j-ncase: ~ $ sudo update-rc.d ondemand vô hiệu hóa update-rc.d: error: không thể tìm thấy tập lệnh LSB cho ondemand
Falc

Câu trả lời:


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

4
Thật ra, chỉ cần lệnh cuối cùng là đủ. Sau sudo systemctl disable ondemandvà khởi động lại: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorchương trình performance.
Yalok Iy

6

Câu trả lời ngắn

Trong /etc/rc.localđặt trong các lệnh này:

sleep 120
cpupower frequency-set --governor performance

1 phút sau khi khởi động tự động chuyển sang Powersave

Vì bất kỳ lý do gì, CPU Intel Skylake của tôi luôn khởi động ở chế độ Hiệu suất và sau đó tự động chuyển sang chế độ Powersave ở mốc 1 phút.

Nếu bạn đặt chế độ thành Hiệu suất khi khởi động, nó sẽ bị ghi đè trong khoảng thời gian Up Up 1 phút thành chế độ Powersave .

Trong GIF bên dưới, tốc độ CPU 3000+ MHz khi khởi động xuất hiện gần đỉnh. Thời gian lên xuất hiện gần đáy. Khi thời gian lên đến khoảng 1 phút, bạn sẽ thấy CPU MHz giảm xuống. :

CPU hoạt động mạnh mẽ trong 1 phút 2.gif


Chương trình giám sát chính xác Powersave thứ hai được gọi

Tạo tập lệnh này trong /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

Gọi tập lệnh /etc/rc.localtrước exit 0lệnh (giải thích chi tiết bên dưới).

Một phút sau khi đăng nhập nhìn vào đầu ra:

$ 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

Xác nhận từ câu trả lời này cho biết lực lượng 1 phút này đối với powersavethống đốc được kiểm soát bởi /etc/init.d/ondemand.


Ngủ 120 giây trước khi cài đặt Chế độ hiệu suất

Cách đơn giản nhất để ở trong chế độ Hiệu suất là chỉnh sửa /etc/rc.localvà chèn các dòng này trước dòng cuối cùng chứa exit 0:

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

Lưu tập tin và khởi động lại.

Nếu bạn chèn các dòng mới sau exit 0nó sẽ không bao giờ được thực thi.


Hãy cẩn thận

Máy của bạn có thể sẽ chạy nóng hơn 10 đến 15 độ C.

Bạn có thể cần xóa các chương trình khác thay đổi tần số CPU nếu chúng ghi đè cài đặt Hiệu suất của bạn trong /etc/rc.local


Gói nào có cpupowervà GUI nào bạn có animgif đó? Tôi đang cố gắng điều chỉnh Ryzen 7 cpufreq-utilsnhưng cảm thấy chậm chạp ngay cả với thống đốc hiệu suất
Csaba Toth

@CsabaToth Tôi sử dụng Conky để hiển thị CPU, RAM, HDD, SDD, Mạng và các chi tiết hệ thống khác. Bạn không cần cpupower nhưng nó là một phần của cpufrequtilsgói. Nếu hệ thống chậm chạp, hãy thử Unity desktop thay vì máy tính để bàn Gnome mặc định .
WinEunuuchs2Unix

@ WinEunuchs2Unix cảm ơn, tôi chưa bao giờ nghe về Conky và nó đã được cài đặt vào hệ thống của tôi. Tôi đang chạy Devuan BTW với Xfce4. Vì vậy, Conky nói rằng tần số CPU của tôi là 550 MHz (0,55 GHz), điều này giải thích cho sự chậm chạp và là những gì tôi mong đợi, nhưng cpufreq-infonói với 3,2 GHz và tôi đang buộc performancethống đốc. Tôi cần mở một câu hỏi cho việc này.
Csaba Toth

4

Các cấu hình nhân Ubuntu mặc định sao cho bộ điều chỉnh tỷ lệ tần số CPU hiệu suất sẽ được sử dụng trong quá trình khởi động. Phần có liên quan của tệp cấu hình kernel ( /boot/config-4.15.0-36-generic, trong ví dụ này) là:

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

Nhưng cũng theo mặc định trong quá trình khởi động, ondemanddịch vụ được thực thi. Nó ngủ trong 1 phút và sau đó thay đổi người điều chỉnh tỷ lệ thành một trong hai interactive, ondemandhoặc powersave, tùy thuộc vào tình trạng sẵn có. Lần lượt tính khả dụng tùy thuộc vào trình điều khiển mở rộng tần số CPU mà bạn đang sử dụng. Mã này là (ở nhiều vị trí, tìm kiếm 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

Tại sao nó được gọi là "ondemand", nhưng nó đặt các thống đốc khác (ví dụ với trình điều khiển intel_pstate, nó sẽ thiết lập thống đốc powersave)? Bởi vì công cụ này có trước trình điều khiển intel_pstate, từ trước đến nay, trình điều khiển mở rộng tần số chiếm ưu thế là trình điều khiển acpi-cpufreq và "ondemand" là thống đốc mặc định ưa thích của Ubuntu.

Vì vậy, một cách để khởi động và duy trì sử dụng bộ điều chỉnh tỷ lệ tần số CPU hiệu suất là vô hiệu hóa dịch vụ thay đổi khỏi nó (cũng được đề cập trong câu trả lời khác):

Trước:

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

Vô hiệu hóa dịch vụ:

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

khởi động lại, sau đó kiểm tra lại (chắc chắn đợi một phút sau khi khởi động lại):

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

Lưu ý: các ví dụ trong câu trả lời này là từ một máy tính sử dụng trình điều khiển thang đo tần số CPU acpi-cpufreq. Nếu bạn đang sử dụng trình điều khiển intel_pstate, không có thống đốc ondemand, thì thống đốc powersave sẽ được sử dụng theo mặc định.

Câu hỏi dự đoán: Tại sao tần số CPU của tôi mở rộng, ngay cả khi sử dụng bộ điều chỉnh hiệu suất?

Trả lời: Bộ xử lý hiện đại chia tỷ lệ tần số CPU, ngay cả trong chế độ hiệu năng và như là một hàm của độ sâu của trạng thái nhàn rỗi mà chúng đi vào. Nếu bạn thực sự muốn khóa tần số CPU thì hãy vô hiệu hóa tất cả các trạng thái nhàn rỗi sâu hơn 0. Tuy nhiên, lưu ý rằng nó sẽ tiêu tốn một lượng điện năng rất lớn.

Cá nhân, và như đã đề cập trong một câu trả lời khác, tôi sử dụng thống đốc hiệu suất hoặc thống đốc quyền hạn như một chức năng của bất kỳ công việc nào tôi đang làm. Kịch bản của tôi hơi khác một chút:

$ 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

và:

$ 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

sử dụng ví dụ (trên máy tính sử dụng trình điều khiển intel_pstate):

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

2

Những gì tôi đã làm là sử dụng tệp /etc/rc.local

Để giúp bạn tìm đường dẫn của mình, hãy sử dụng:

find / -name scaling_governor
find / -name scaling_max_freq

Điều này hoạt động cho thiết lập của tôi, nhưng bạn chỉ cần chỉnh sửa nó cho thiết lập của bạn

Tôi đã thêm vào /etc/rc.local bằng nano:

# 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

trực tiếp dưới dòng shebang. Đóng nano bằng Ctrl-X và Y để lưu

Sau đó, cho 18.04 (có thể không hoạt động vào 16.04) khi chạy dòng lệnh:

systemctl disable ondemand

Sau đó, trên dòng lệnh - đọc /etc/rc.local và sau đó khởi động lại:

/etc/rc.local
reboot

if /etc/rc.local cuộn cảm và lỗi thì hãy chắc chắn rằng đó là chmod + x /etc/rc.local


Một điều khác mà tôi làm là chỉnh sửa /etc/init.d/ondemand hoặc ondemand cần được chuyển đến ondemandzzz để vô hiệu hóa nó. Có một giấc ngủ 60 trong /etc/init.d/ondemand trước khi nó thiết lập thống đốc. Mặc dù RC.local sẽ thay đổi nó thành hiệu suất khi khởi động, 60 giây sau nó sẽ được thay đổi bởi /etc/init.d/ondemand. Trong /etc/init.d/ondemand thay đổi dòng: echo -n $ GOVERNOR> $ CPUFREQ thành: echo -n "Performance"> $ CPUFREQ nếu bạn quyết định giữ /etc/init.d/ondemand hoạt động ...
WesZ

1

Tôi đang sử dụng tập lệnh bash này để thiết lập performancethống đốc:

#!/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 có thể thực thi chmod +x cpu.shvà chạy bất cứ lúc nào Bạn cần (ngay sau mỗi lần khởi động / khởi động lại máy tính).


0

Tôi đã có một vấn đề tương tự. Trong trường hợp của tôi, tôi muốn đặt thống đốc thành 'calendarutil', nhưng sau khi khởi động lại, tôi sẽ luôn tìm thấy thống đốc là 'ondemand'. Tôi đã đọc và đã thử hầu hết các giải pháp được trình bày ở đây nhưng không có kết quả.

Điều gì đã lừa tôi và tôi đang sử dụng Ubuntu Mate 18.04.2 là tìm tệp:

/ lib / systemd / set-cpufreq

chỉnh sửa nó để chèn các dòng:

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

vì vậy bây giờ các tập tin đọc:

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

và bây giờ khi tôi khởi động máy tính của mình, nó bắt đầu với thống đốc 'calendarutil'!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.