Хорошо, во-первых, английский язык не является моим родным языком, таким образом, я приношу извинения за любую плохую формулировку.
Во-вторых, я все еще узнаю о Linux, Ubuntu 18.04, чтобы быть более конкретным. Это - первый раз, когда я использую эту ОС, и мое знание о терминале, командах, пакеты являются все еще очень простыми. И вещи, которые I CAN, я не уверен, что понимаю их полностью. Терпение.
Так, к проблеме. Я решил попробовать некоторые игры недавно и к моему удивлению некоторые игры, в которые я мог играть, прежде на W10 неиграемый дуэт к некоторой проблеме производительности. Эти игры запускаются на уровне 35-45 кадр/с и внезапно спадают до 1-15 кадр/с (да, один кадр/с!).
Сначала я думал, что это могло быть что-то связанное с gpu, драйверы, возможно, но не, я получил последние драйверы от некоторого ppa. Смешанный с графическим качеством игр, но я начал замечать, что только больше требования CPU испытывало эти затруднения.
Затем я начал искать способы отслеживать использование CPU. Системный монитор не был достаточно, таким образом, я нашел некоторых watch
команды, которые отслеживают скорость ЦП и температуру ЦП. Я должен был установить lm-sensors
для температуры.
Наконец, кажется, что тонкость моего ноутбука заставляет его перегреться и затем дроссели CPU, делая эти плачевные падения кадр/с. Я завершил это на основе внезапных падений скорости ЦП, поскольку температуры становились высокими. Но я на самом деле не могу сказать, состояли ли температуры, которые я получил, в том, ЧТО высоко, максимум, который я получил, был вокруг 80°C на ЦП. И также, вентилятор, кажется, работает правильно, это обошло 5 000 об/мин.
Для улучшения этого, я пытался изменить управлять параметр cpufreq
от powersave до производительности. Хотя это не зафиксировало отбрасывание производительности, я заметил некоторое улучшение. Скорость ЦП спала до 1 600 МГц вместо 600 МГц. Затем это получило меня задающийся вопросом, должен ли я установить минимальную частоту ЦП или деактивировать масштабирование. Но я боюсь, что это могло ведомый к перегреванию и затем расплавлению его. Я мог также попробовать некоторую более прохладную поддержку, но я не уверен в эффективности тех.
Так, кто-либо может пролить некоторый свет в этом?
sudo lshw -c cpu
descrição: CPU
produto: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
fabricante: Intel Corp.
ID físico: 36
informações do barramento: cpu@0
versão: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
serial: To Be Filled By O.E.M.
slot: U3E1
tamanho: 2228MHz
capacidade: 3100MHz
largura: 64 bits
clock: 100MHz
lspci | grep -i VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
lspci | grep -i 3D
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
xandr | grep connected
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
tomaz@tomaz-Inspiron-7460:~$ stress-ng -t 5m -v --tz -c 4
stress-ng: debug: [15960] 4 processors online, 4 processors configured
stress-ng: info: [15960] dispatching hogs: 4 cpu
stress-ng: debug: [15960] cache allocate: default cache size: 3072K
stress-ng: debug: [15960] starting stressors
stress-ng: debug: [15961] stress-ng-cpu: started [15961] (instance 0)
stress-ng: debug: [15962] stress-ng-cpu: started [15962] (instance 1)
stress-ng: debug: [15960] 4 stressors spawned
stress-ng: debug: [15961] stress-ng-cpu using method 'all'
stress-ng: debug: [15964] stress-ng-cpu: started [15964] (instance 3)
stress-ng: debug: [15963] stress-ng-cpu: started [15963] (instance 2)
stress-ng: debug: [15964] stress-ng-cpu using method 'all'
stress-ng: debug: [15963] stress-ng-cpu using method 'all'
stress-ng: debug: [15962] stress-ng-cpu using method 'all'
stress-ng: debug: [15961] stress-ng-cpu: exited [15961] (instance 0)
stress-ng: debug: [15960] process [15961] terminated
stress-ng: debug: [15963] stress-ng-cpu: exited [15963] (instance 2)
stress-ng: debug: [15962] stress-ng-cpu: exited [15962] (instance 1)
stress-ng: debug: [15960] process [15962] terminated
stress-ng: debug: [15960] process [15963] terminated
stress-ng: debug: [15964] stress-ng-cpu: exited [15964] (instance 3)
stress-ng: debug: [15960] process [15964] terminated
stress-ng: info: [15960] successful run completed in 300.05s (5 mins, 0.05 secs)
stress-ng: info: [15960] cpu:
stress-ng: info: [15960] pch_skylake 59.25 °C
stress-ng: info: [15960] B0D4 62.12 °C
stress-ng: info: [15960] INT3400 Thermal 48.08 °C
stress-ng: info: [15960] SEN2 50.81 °C
stress-ng: info: [15960] TMEM 50.15 °C
stress-ng: info: [15960] x86_pkg_temp 54.88 °C
stress-ng: info: [15960] acpitz 50.61 °C
stress-ng: info: [15960] SEN1 50.78 °C
Необходимо смочь ограничить верхнюю частоту ЦП, к, например, 65%, с помощью этой команды:
echo 65 | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
Вышеупомянутое предполагает использование intel_pstate драйвера частотного масштабирования ЦП которым необходимо быть по умолчанию. Проверять:
doug@s15:~/temp$ 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
Очень хороший инструмент для использования для контроля вещей является турбостатом, который включен в linux-tools-common пакет.
Ниже пример, где мой компьютер в большой степени загружается, и температура корпуса процессора, достиг его самая высокая точка. В другом терминале я затем ограничиваю частоту ЦП (показанный далее вниз), и можно наблюдать частоту, температуру и отбрасывание мощности:
doug@s15:~/temp$ sudo turbostat --quiet --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt --interval 15
Busy% Bzy_MHz PkgTmp PkgWatt
100.00 3500 79 63.91
100.00 3500 78 63.91
100.00 3500 78 63.91
100.00 3500 78 63.88
100.00 3500 79 63.89
100.00 3500 79 63.90
100.00 2755 70 45.86
100.00 2500 68 39.42
100.00 2500 67 39.26
100.00 2500 66 39.10
100.00 2500 65 39.07
100.00 2500 65 38.94
100.00 2500 64 38.93
100.00 2500 65 38.92
Что было сделано в другом терминале:
doug@s15:~$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
doug@s15:~$ echo 65 | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct
65
doug@s15:~$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
65
Примечание: частота ЦП на 2 500 МГц является округленным значением ближайших на 100 МГц (ближайший pstate 25) к 3 800 * 0.65. Но эй, турбостат показал 3 500 МГц прежде. Почему? Поскольку все ядра были заняты, и поэтому максимальная частота ЦП была ограничена 3 500 МГц, внутренними к самому процессору. Эта информация также доступна через турбостат, не используя quiet
директива. Пример:
doug@s15:~/temp$ sudo turbostat --Summary --show Busy%,Bzy_MHz,PkgTmp,PkgWatt --interval 15
... [snip]...
cpu4: MSR_PLATFORM_INFO: 0x100070012200
16 * 100.0 = 1600.0 MHz max efficiency frequency
34 * 100.0 = 3400.0 MHz base frequency
cpu4: MSR_IA32_POWER_CTL: 0x0004005d (C1E auto-promotion: DISabled)
cpu4: MSR_TURBO_RATIO_LIMIT: 0x23242526
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
36 * 100.0 = 3600.0 MHz max turbo 3 active cores
37 * 100.0 = 3700.0 MHz max turbo 2 active cores
38 * 100.0 = 3800.0 MHz max turbo 1 active cores
...[snip]...
Существует много способов ограничить температуры ЦП меньше, чем экстремумами автоматически. Каждый с thermald, и у меня есть сценарий конфигурации в качестве примера в другом ответе.