Ubuntu отключается во время игры из-за перегрева процессора

Ноутбук часто отключается внезапно после 20-30 минут интенсивного использования (почти всегда в игре). Затем после перезагрузки BIOS выдает сообщение о том, что процессор слишком горячий и его необходимо выключить.

Настройка:

  • Dell XPS (с процессором i7-7700 2,8 ГГц)
  • Ubuntu 17.10 (базовая настройка)
  • nVidia GTP 1050 mobile с nVidia 384.9 водитель

Это не происходило на той же машине, в той же игре и Win10. Я подозреваю, что у меня плохая настройка системы или, возможно, отсутствует драйвер - но я не мог найти, как это исправить. Есть ли в Ubuntu что-нибудь, что может этому помешать - может быть, просто дросселируя процессор, а не закрывая его?

1
задан 4 January 2018 в 02:55

2 ответа

Все, что вы делаете в программном обеспечении для смягчения проблемы, ограничивает вашу способность полностью использовать и наслаждаться вашим процессором (за исключением увеличения скорости вентилятора, если это возможно). Это аппаратный недостаток теплового дизайна ноутбука.

Несмотря на то, что за пределами сайта на подобном сайте я говорю о том, чтобы вентиляторы вращались, воздух мог течь вокруг и под ноутбуком (он не на подушке или кровати), процессор правильно привязан к своему радиатору. или какой-либо тепловой проводник используется с надлежащей термопастой, нет скопления пыли, которое могло бы препятствовать движению воздуха, и т. д.

Но это печальный факт, что некоторые ноутбуки просто неадекватно предназначены для охлаждения процессора, если он когда-либо видит интенсивную нагрузку, полагаясь на дросселирование, чтобы компенсировать плохой дизайн.

2
ответ дан 4 January 2018 в 02:55

Я раньше имел подобные проблемы для нескольких ноутбуков. Кажется, что ЦП в ноутбуках имеет тенденцию перегреваться более легко со временем и закрываться. При замене вентилятора процессора и качества тепловая вставка никогда не помогала мне в этих ситуациях. До сих пор я ограничил макс. частоту на Ubuntu, но это могло бы произойти, что Вы просто оставляете свой ноутбук при выполнении некоторой обработки на мгновение под Sun, и она просто перегревает целый корпус ноутбука, вызывая закрытие в конечном счете.

Я узнал, что новейшие ноутбуки с процессорами Intel не работают с cpufreq-набором правильно, но только с likwid инструментами.

Установка этого пакета:

sudo apt install likwid

Я записал следующий сценарий Python для уменьшений/увеличивания, макс. частота ЦП (manipulate_cpu_freq.py) в соответствии с Ubuntu 18.04 (требует Python 3.7):

#!/usr/bin/python3.7

import argparse
import os
import subprocess

parser = argparse.ArgumentParser(description = "Manipulate CPU frequencies", prefix_chars = '-')
parser.add_argument("-d", "--decrease", help = "decrease the max frequency", type = bool, default = False)
parser.add_argument("-i", "--increase", help = "increase the max frequency", type = bool, default = False)
parser.add_argument("-s", "--silent", help = "silent mode", type = bool, default = False)
args = parser.parse_args()

query_freqs_output = subprocess.run(["likwid-setFrequencies", "-l"], capture_output = True)
query_freqs_output = query_freqs_output.stdout.decode('utf-8').split('\n')[1]
query_freqs_output = query_freqs_output.split(' ')
available_freqs = list(map(float, query_freqs_output))

query_curr_freq_output = subprocess.run(["likwid-setFrequencies", "-p"], capture_output = True)
query_curr_freq_output = query_curr_freq_output.stdout.decode('utf-8').split('\n')[1]
query_curr_freq_output = query_curr_freq_output.split('/')[-1]
current_freq = float(query_curr_freq_output.split(' ')[0])
curr_freq_index = min(range(len(available_freqs)), key = lambda i: abs(available_freqs[i]-current_freq))

if not args.silent:
  print("Available frequencies:", available_freqs)
  print("Current frequency:", current_freq)

if args.decrease:
  print("Decrease the frequency")
  if curr_freq_index == 0:
    print("Warning: Can't decrease the frequency because it is already at min")
    exit(1)

  print("Set to frequency", available_freqs[curr_freq_index-1], "Ghz")
  subprocess.run(["likwid-setFrequencies", "-y", str(available_freqs[curr_freq_index-1])])
  exit(0)

if args.increase:
  print("Increase the frequency")
  if curr_freq_index == len(available_freqs)-1:
    print("Warning: Can't increase the frequency because it is already at max")
    exit(1)

  print("Set to frequency", available_freqs[curr_freq_index+1], "Ghz")
  subprocess.run(["likwid-setFrequencies", "-y", str(available_freqs[curr_freq_index+1])])
  exit(0)

И я использую сценарий, работающий в фоновом режиме для контроля температуры ЦП (run_cpu_policy.sh):

#!/bin/bash

while true
do
  CPU_TEMP=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)
  echo CPU Temperature: $(echo ${CPU_TEMP}/1000 | bc)°C
  if [ "$CPU_TEMP" -gt 76000 ]; then
    echo Decrease the max CPU frequency
    sudo manipulate_cpu_freq.py -s 1 -d 1
  fi
  if [ "$CPU_TEMP" -le 68000 ]; then
    echo Increase the max CPU frequency
    sudo manipulate_cpu_freq.py -s 1 -i 1
  fi
  sleep 10
done

Конечно, необходимо проверить, какие sys указывают (например,/sys/devices/virtual/thermal/thermal_zone0/temp) содержит температуру ЦП, и адаптируйте сценарий выше. Я увеличиваю ЦП макс. частота, когда температура ниже 68°C и уменьшение, если это выше 76°C. Это - очень консервативная политика, но температура может достигнуть быстро выше 100°C (вокруг теплового порога завершения работы), если это находится выше 80°C постоянно таким образом, я пытаюсь оставаться всегда ниже 80°C, только быть уверенным.

Я должен был вчера разработать вышеупомянутое решение, потому что я получил два тепловых завершения работы из-за солнечного, жаркого дня при выполнении интенсивных вычислений на моем ноутбуке ЦП (Intel i7-6600U) непрерывно.

Можно запустить скрипт после каждого запуска с добавлением к заданиям крона (/etc/crontab):

@reboot root systemd-run --scope sudo -u YOUR_USER screen -dmS cpu_policy /home/YOUR_USER/run_cpu_policy.sh

Обязательно имейте установленный экран:

sudo apt install screen

Можно проверить его при выполнении:

screen -r cpu_policy
0
ответ дан 4 January 2018 в 02:55

Другие вопросы по тегам:

Похожие вопросы: