好的,首先,英语不是我的母语,所以我为任何糟糕的措辞道歉。
其次,我还在学习 Linux,更具体地说是 Ubuntu 18.04。这是我第一次使用这个操作系统,我对终端、命令、包的了解还是很基础的。而我能做的事情我不确定我是否完全理解它们。请耐心等待。
所以,对于问题。我最近决定尝试一些游戏,令我惊讶的是,我之前可以在 W10 上玩的一些游戏由于某些性能问题而无法玩。这些游戏以 35-45 fps 开始,然后突然下降到 1-15 fps(是的,1 fps!)。
起初我认为这可能与 gpu 相关,可能是驱动程序,但不,我从一些 ppa 获得了最新的驱动程序。弄乱了游戏的图形质量,但我开始注意到只有对 CPU 要求更高的才会遇到这个问题。
然后我开始寻找跟踪 CPU 使用情况的方法。系统监视器还不够,所以我找到了一些watch
跟踪 cpu 速度和 cpu 温度的命令。我必须安装lm-sensors
温度。
最后,我的笔记本电脑的薄度似乎使它过热,然后 cpu 油门,使这些 fps 大幅下降。我是根据温度升高时 CPU 速度突然下降得出的结论。但实际上我不能说我得到的温度是否那么高,我得到的最高温度是 CPU 上的 80°C 左右。而且,风扇似乎工作正常,转速约为 5000 RPM。
为了改善这一点,我尝试将控制参数cpufreq
从省电更改为性能。虽然它没有解决性能下降的问题,但我注意到了一些改进。CPU 速度从 600 Mhz 下降到 1600 MHz。然后它让我想知道我是否应该设置最低 CPU 频率或停用缩放。但我担心它会导致过热然后融化。我也可以尝试一些更酷的支持,但我不确定这些支持的效率。
那么,任何人都可以对此有所了解吗?
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
您应该能够使用以下命令将 CPU 频率上限限制为 65%:
以上假设您使用的是 intel_pstate CPU 频率缩放驱动程序,默认情况下您应该使用该驱动程序。去检查:
用于监控事物的一个非常好的工具是 turbostat,它包含在 linux-tools-common 包中。
以下是我的计算机负载很重且处理器封装温度已达到最高点的示例。然后在另一个终端中,我限制了 CPU 频率(如下图所示),您可以观察到频率、温度和功率下降:
在另一个终端做了什么:
注意:2500 MHz CPU 频率是最接近 100 MHz 的舍入值(最接近 pstate 的 25)到 3800 * 0.65。但是,嘿,turbostat 之前显示 3500 MHz。为什么?因为所有内核都很忙,因此处理器本身内部的最大 CPU 频率被限制为 3500 MHZ。此信息也可通过不使用该
quiet
指令的 turbostat 获得。例子:有许多方法可以自动将 CPU 温度限制在低于极端值。一个是 thermod,我在另一个答案中有一个示例配置脚本。