Vô hiệu hóa Intel Turbo Boost trong Ubuntu


17

Tôi mới sử dụng Ubuntu và muốn vô hiệu hóa turbo boost. Tôi đã cố gắng với cpufreqnhưng tôi không thể làm cho nó hoạt động. CÒn cách nào khác để thực hiện việc này không.

Trong các cửa sổ, việc thay đổi tốc độ CPU từ 100 thành 99 là dễ dàng.


mô hình cpu của bạn là gì?
Ron

@Ron: đó là CPU Intel (R) Pentium (R) B960 @ 2.20GHz Tôi đã nhận được thông tin từ cuộc trò chuyện mà họ chuyển đến. Tôi nghĩ nó không thực sự quan trọng, điều quan trọng là trình điều khiển mở rộng nào đang được sử dụng. Hiện tại (khác với quá khứ), nó sẽ mặc định là intel_pstate nếu bộ xử lý hỗ trợ.
Doug Smythies

Các bạn, tôi đã thử: sudo cpupower Hz-set -g powersave và nó nói: Cài đặt cpu: 0 Cài đặt cpu: 1 Vậy nên đặt lõi nào để thay đổi? :)
Ivaylo

Bất kể bạn đang sử dụng trình điều khiển chia tỷ lệ nào, có bật turbo hay không là cài đặt chung, một điểm bao gồm tất cả các CPU. Bản thân tôi, tôi chỉ sử dụng các lệnh nguyên thủy, không bao giờ các công cụ cấp cao hơn như cpupower.
Doug Smythies

Câu trả lời:


18

Để đọc trạng thái hiện tại của Turbo Boost, chúng ta cần cài đặt các công cụ msr

sudo apt-get install msr-tools

Để biết tính năng Turbo Boost có bị tắt hay không, hãy chạy:

rdmsr -pi 0x1a0 -f 38:38

1=disabled
0=enabled

Thay thế tôi bằng số lõi của bạn


NOte: Nếu bạn gặp lỗi sau:

rdmsr:open: No such file or directory

sau đó tải mô-đun của ms msr bằng lệnh sau:

sudo modprobe msr

Để tắt tính năng Turbo Boost, người ta có thể đặt toàn bộ thanh ghi MSR 0x1a0 thành 0x4000850089, như ở đây:

wrmsr -pC 0x1a0 0x4000850089

Trong đó C đề cập đến một số lõi cụ thể

Bạn có thể lấy số đó bằng cách chạy

cat /proc/cpuinfo | grep processor

sau đó một khi bạn biết số của mình, bạn phải chạy lệnh trên cho mỗi lõi. trong trường hợp của bạn số sẽ là 0 & 1 vì vậy bạn phải làm

wrmsr -p0 0x1a0 0x4000850089

wrmsr -p1 0x1a0 0x4000850089

Giải pháp là viết tắt của blog này


Từ http://notepad2.blogspot.com/2014/11/a-script-to-turn-off-intel-cpu-turbo.html

Một tập lệnh để vô hiệu hóa / kích hoạt turbo boost

Kịch bản sau đây có thể được sử dụng để tắt / bật turbo boost:

#!/bin/bash

if [[ -z $(which rdmsr) ]]; then
    echo "msr-tools is not installed. Run 'sudo apt-get install msr-tools' to install it." >&2
    exit 1
fi

if [[ ! -z $1 && $1 != "enable" && $1 != "disable" ]]; then
    echo "Invalid argument: $1" >&2
    echo ""
    echo "Usage: $(basename $0) [disable|enable]"
    exit 1
fi

cores=$(cat /proc/cpuinfo | grep processor | awk '{print $3}')
for core in $cores; do
    if [[ $1 == "disable" ]]; then
        sudo wrmsr -p${core} 0x1a0 0x4000850089
    fi
    if [[ $1 == "enable" ]]; then
        sudo wrmsr -p${core} 0x1a0 0x850089
    fi
    state=$(sudo rdmsr -p${core} 0x1a0 -f 38:38)
    if [[ $state -eq 1 ]]; then
        echo "core ${core}: disabled"
    else
        echo "core ${core}: enabled"
    fi
done

lưu cái này vào một tập tin gọi là turbo-boost.sh

Cách sử dụng: Bạn có thể sao chép tập lệnh trên và lưu tập tin vào tệp có tên turbo-boost sau đó đặt tập lệnh thành tập tin thực thi:

sudo chmod +x turbo-boost.sh

sau đó bạn có thể sử dụng nó để vô hiệu hóa / kích hoạt turbo boost:

./turbo-boost.sh disable
./turbo-boost.sh enable

Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Mitch

$ rdmsr -pi 0x1a0 -f 38:38chỉ cho tôi một danh sách các tùy chọn để sử dụng với lệnh. ví dụ: Usage: rdmsr [options] regno --help -h Print this help --version -V Print current version ....Cú pháp trên có lỗi thời / không áp dụng theo cách chung không?
Ngài hennihau

30

Nếu hệ thống của bạn đang sử dụng trình điều khiển mở rộng tần số intel_pstate:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate

Sau đó, bạn có thể hỏi về trạng thái bật hoặc tắt turbo:

$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0

Trong đó 0 có nghĩa là turbo được kích hoạt và 1 có nghĩa là nó bị vô hiệu hóa. Và bạn có thể thay đổi nó bằng cách viết (như sudo) vào cùng một vị trí.

$ echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
1

Tôi không bao giờ nhớ vị trí hoặc cách thực hiện điều 'tee' đúng cách, vì vậy tôi thích các tập lệnh được chạy như sudo:

$ cat set_cpu_turbo_off
#! /bin/bash
echo "1" > /sys/devices/system/cpu/intel_pstate/no_turbo

$ cat set_cpu_turbo_on
#! /bin/bash
echo "0" > /sys/devices/system/cpu/intel_pstate/no_turbo

Nếu bạn gặp vấn đề với quyền, hãy thửsudo echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Cirelli94

Điều này có thể được thiết lập vĩnh viễn, để ở lại sau khi khởi động lại?
Alexey

@Alexey: Nếu bạn muốn nó là vĩnh viễn, thì tôi sẽ đề nghị làm điều đó trong BIOS thay thế. Nếu không, làm cho set_cpu_turbo_offkịch bản trên để chạy trong khi khởi động.
Doug Smythies

1
@ Cirelli94 - ngay cả như vậy:sudo echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo 1 tee: /sys/devices/system/cpu/intel_pstate/no_turbo: Operation not permitted

1
Vì một số lý do, điều này không có tác dụng gì đối với tôi trong Ubuntu Server 14. sudo wrmsr --all 0x1a0 0x4000850089thực hiện thủ thuật này.
sudo

2

Bạn có thể thử đặt /sys/devices/system/cpu/cpufreq/boostgiá trị thành 0.

echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost

1
nó nói không có tập tin hoặc thư mục như vậy
Ivaylo

@Ron Tôi khuyên bạn nên mở rộng câu trả lời này với một lời giải thích về cách làm điều đó.
Eliah Kagan

2
Tôi đồng ý với nhận xét từ Eliah. Đây là một câu trả lời đúng nếu trình điều khiển thang đo tần số là acpi-cpufreq.
Doug Smythies
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.