Hạn chế sử dụng CPU về mặt nhiệt độ


8

Tôi chạy các dự án điện toán phân tán, thường muốn sử dụng 100% CPU. Làm cách nào để hạn chế việc sử dụng CPU về mặt nhiệt độ thay vì tỷ lệ sử dụng? Ngoài ra, nhiệt độ an toàn tối đa để giữ cho Intel i5 hoạt động 24/7 là bao nhiêu? (Không có giới hạn CPU FahCore_a4 khiến máy này chạy ở 82 độ C.)

Câu trả lời:


8

Trên trang web này có một tập lệnh bash sẽ cố gắng giữ CPU của bạn dưới một nhiệt độ được chỉ định. http://seperohacker.blogspot.com/2012/10/linux-keep-your-cpu-cool-with-frequency.html

Bạn chỉ cần cung cấp cho nó nhiệt độ tối đa mong muốn của bạn và nó sẽ điều tiết (các) CPU của bạn trong nỗ lực duy trì dưới nhiệt độ đó.

Ổ cắm không biết xấu hổ- Tôi đã viết và duy trì kịch bản trên.


2
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
fossfreedom

1
kịch bản hay .. ý tưởng hay :)
Exclusiviji

1
đây là những phần thiết yếu: github.com/Sepero/temp-thrption
DmitrySandalov

3

Đây là cách tôi giải quyết nó bằng cách sử dụng bash. Nếu bất cứ ai đến với một daemon tốt hơn (tốt hơn ở gần nhiệt độ mục tiêu) xin vui lòng gửi nó.

#!/bin/bash

while true; do
        val=$(sensors | awk '/Core 0/ {print $3}')
        max="+60.0"
        if [[ "$val" < "$max" ]]
        then
                killall cpulimit
                sleep .1
        else
                cpulimit -e FahCore_a4 -l 99 &
                sleep 1
        fi
        clear
        sensors
done

0

Bản thân CPU có một cơ chế trong đó nó tự tắt nguồn nếu quá nóng. (có thể không nếu bạn tắt các ngắt SMI, tôi không chắc về điều đó.)

Ứng dụng không gian người dùng chính là lm-sensorsgói. Sau khi cài đặt, nó sẽ chạy sensors-detectđể thiết lập nó, nếu máy của bạn giống nhau, bạn có thể chạy nó một lần và sử dụng kết quả ở mọi nơi.

Tần số CPU được điều khiển dễ dàng thông qua hệ thống con trình điều khiển cpufreq. xem https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling

Bạn có thể viết một daemon sử dụng cảm biến lm để thăm dò temp và nếu nó quá nóng sẽ làm giảm tần số cpu.


ngôn ngữ nào sẽ viết một daemon như vậy là dễ nhất? Bash, trăn, awk?
jeffythedragonslayer

Tôi muốn nói bash là đơn giản nhất. Đây là một ví dụ (xem các dòng 55-66).
Adobe

0

Đây là cách tôi giải quyết các vấn đề quá nhiệt không phải do một quy trình cụ thể gây ra, nhưng do máy tính xách tay của tôi không thể làm giảm nhiệt do chạy trên tải CPU cao trong thời gian dài hơn. Sự khác biệt chính đối với giải pháp được cung cấp bởi chính da khỉ là tôi sử dụng thang đo tần số cpu, thay vì sử dụng cpulimit trên một quy trình cụ thể. Vì dù sao tôi cũng đã cài đặt Psensor và chạy, tôi cõng trên Psensor. Một daemon như da mã khỉ được đề xuất cũng nên hoạt động, tuy nhiên cần có hai ngưỡng (tối thiểu và tối đa). Trong Psensor (Tùy chọn cảm biến-> Báo thức) Tôi đặt báo thức cho cảm biến có liên quan nếu trở nên cao hơn ngưỡng cao (tôi sử dụng 85) hoặc thấp hơn ngưỡng thấp (tôi sử dụng 80). Trong Preferences-> Sensors-> Script được thực thi khi có cảnh báo được nêu lên, tôi gọi kịch bản của mình là Heatcontrol.sh như thế này:

/ALLUSER/heatcontrol.sh powersave ondemand 82

Tham số đầu tiên là scaling_gocateor hợp lệ làm giảm tần số CPU, ví dụ như powersave. Tham số thứ hai là scaling_gocateor mặc định - ondemand cho hầu hết các hệ thống. Tham số thứ ba là nhiệt độ giữa ngưỡng thấp và cao (giá trị chính xác không quan trọng). Psensor thêm hai tham số nữa: id cảm biến và nhiệt độ được báo cáo.

Và đây là kịch bản Heatcontrol.sh của tôi:

#!/bin/bash
 # TempNZ is temperature reported by Psensor; strip of trailing °C
TempNZ=$5 
bnum=`expr index "$TempNZ" "°"`
if (( bnum < 2 )); then
    echo "ERROR"
fi
TempNZ=${TempNZ:0:$(($bnum-1))}
STR=$1
# Is this a low threshold alarm?
if [ "$TempNZ" -le "$3" ]; then
    STR=$2
fi
sudo sh -c "echo '$STR' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# echo new scaling_governor
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# play sound - audio feedback - optional
paplay /usr/share/sounds/ubuntu/stereo/message-new-instant.ogg

Hoạt động tốt với tôi (UBUNTU 14.04 LTS).

Là một người mới làm quen với Linux và bash, tôi đã sử dụng một số tài nguyên, bao gồm:

https://wiki.archlinux.org/index.php/CPU_frequency_scaling

http://elinux.org/Jetson/Performance#Viewing_the_cản_CPU_status

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.