ปิดการใช้งาน Intel Turbo Boost ใน Ubuntu


17

ฉันใหม่กับ Ubuntu และต้องการปิดใช้งานเทอร์โบบูสต์ ฉันลองด้วยcpufreqแต่ฉันไม่สามารถทำงานได้ มีวิธีอื่นที่จะทำหรือไม่

ใน windows มันง่ายเหมือนการเปลี่ยนความเร็ว CPU จาก 100 เป็น 99


โมเดล cpu ของคุณคืออะไร
Ron

@Ron: มันเป็น Intel (R) Pentium (R) CPU B960 @ 2.20GHz ฉันได้รับข้อมูลจากการแชทที่พวกเขาย้ายไป ฉันคิดว่ามันไม่สำคัญเลยจริงๆสิ่งสำคัญคือมีการใช้โปรแกรมควบคุมสเกลใด ปัจจุบัน (ซึ่งแตกต่างจากในอดีต) มันจะใช้ค่าเริ่มต้นเป็น intel_pstate หากโปรเซสเซอร์รองรับ
Doug Smythies

พวกฉันพยายาม: sudo cpupower frequency-set -g powersave และมันบอกว่า: การตั้ง cpu: 0 การตั้ง cpu: 1 แล้วจะวางแกนไหนให้เปลี่ยน? :)
Ivaylo

ไม่ว่าคุณจะใช้สเกลไดรเวอร์ใดอยู่การเปิดใช้งานเทอร์โบหรือไม่เป็นการตั้งค่าส่วนกลางจุดเดียวครอบคลุมซีพียูทั้งหมด cpupowerตัวเองก็เพียงใช้คำสั่งดั้งเดิมเครื่องมือระดับระดับไม่สูงขึ้นเช่น
Doug Smythies

คำตอบ:


18

หากต้องการอ่านสถานะปัจจุบันของ Turbo Boost เราต้องติดตั้งเครื่องมือ msr

sudo apt-get install msr-tools

หากต้องการทราบว่าปิดใช้งานคุณสมบัติ Turbo Boost หรือไม่ให้เรียกใช้:

rdmsr -pi 0x1a0 -f 38:38

1=disabled
0=enabled

แทนที่ i ด้วยหมายเลขแกนของคุณ


ไม่: ถ้าคุณได้รับข้อผิดพลาดต่อไปนี้:

rdmsr:open: No such file or directory

จากนั้นโหลดโมดูล“ msr” โดยใช้คำสั่งต่อไปนี้:

sudo modprobe msr

หากต้องการปิดใช้งานคุณสมบัติ Turbo Boost คุณสามารถตั้งค่า 0x1a0 MSR ทั้งหมดให้เป็น 0x4000850089 เช่นเดียวกับที่นี่:

wrmsr -pC 0x1a0 0x4000850089

โดยที่ C หมายถึงหมายเลขหลักเฉพาะ

คุณสามารถรับหมายเลขนั้นได้ด้วยการวิ่ง

cat /proc/cpuinfo | grep processor

จากนั้นเมื่อคุณทราบหมายเลขของคุณแล้วคุณต้องเรียกใช้คำสั่งด้านบนสำหรับแต่ละคอร์ ในกรณีที่หมายเลขของคุณจะเป็น 0 & 1 ดังนั้นคุณต้องทำ

wrmsr -p0 0x1a0 0x4000850089

wrmsr -p1 0x1a0 0x4000850089

โซลูชันหมายถึงบล็อกนี้


จากhttp://notepad2.blogspot.com/2014/11/a-script-to-turn-off-intel-cpu-turbo.html

สคริปต์เพื่อปิด / เปิดใช้งานเทอร์โบบูสต์

สคริปต์ต่อไปนี้สามารถใช้เพื่อเปิด / ปิด 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

บันทึกสิ่งนี้ลงในไฟล์ที่เรียกว่า turbo-boost.sh

การใช้งาน: คุณสามารถคัดลอกสคริปต์ด้านบนและบันทึกลงในไฟล์ชื่อ turbo-boost จากนั้นตั้งค่าให้สามารถเรียกใช้งานได้:

sudo chmod +x turbo-boost.sh

จากนั้นคุณสามารถใช้มันเพื่อปิด / เปิดการใช้งานเทอร์โบบูสต์:

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

ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
มิทช์

$ rdmsr -pi 0x1a0 -f 38:38ให้รายการตัวเลือกเพื่อใช้กับคำสั่ง เช่น: Usage: rdmsr [options] regno --help -h Print this help --version -V Print current version ....ไวยากรณ์ข้างต้นล้าสมัย / ไม่สามารถใช้ได้ในลักษณะทั่วไปหรือไม่?
ท่าน hennihau

30

หากระบบของคุณใช้ไดรเวอร์การปรับความถี่ 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

จากนั้นคุณสามารถสอบถามเกี่ยวกับสถานะการเปิดใช้งานหรือปิดใช้งานเทอร์โบ:

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

ที่ 0 หมายถึงเปิดใช้งานเทอร์โบและ 1 หมายถึงปิดใช้งาน และคุณสามารถเปลี่ยนได้โดยการเขียน (เป็น sudo) ไปยังตำแหน่งเดียวกัน

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

ฉันไม่เคยจำตำแหน่งหรือวิธีการทำสิ่งที่ `ที 'ได้อย่างถูกต้องดังนั้นฉันจึงต้องการให้สคริปต์ทำงานเป็น 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

หากคุณมีปัญหาเกี่ยวกับการอนุญาตให้ลองsudo echo "0" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
Cirelli94

สามารถตั้งค่านี้อย่างถาวรเพื่ออยู่หลังรีบูตได้หรือไม่
Alexey

@Alexey: หากคุณต้องการให้ถาวรฉันขอแนะนำให้ทำใน BIOS แทน มิฉะนั้นให้set_cpu_turbo_offสคริปต์ข้างต้นทำงานในระหว่างการเริ่มต้น
Doug Smythies

1
@ Cirelli94 - แม้ดังนั้น: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
ด้วยเหตุผลบางอย่างนี่ไม่ได้มีผลใด ๆ กับฉันใน Ubuntu Server 14 ที่sudo wrmsr --all 0x1a0 0x4000850089จะทำการหลอกลวง
sudo

2

คุณสามารถลองตั้ง/sys/devices/system/cpu/cpufreq/boostค่าเป็น 0

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

1
มันบอกว่าไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
โอโบ

@Ron ฉันขอแนะนำให้ขยายคำตอบนี้พร้อมคำอธิบายวิธีการทำเช่นนั้น
Eliah Kagan

2
ฉันเห็นด้วยกับความคิดเห็นจาก Eliah มันเป็นคำตอบที่ถูกต้องหากไดรเวอร์การปรับสเกลความถี่เป็น acpi-cpufreq
Doug Smythies
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.