前提
我最近从 17.04 升级到了 17.10。
我有以下显卡和处理器(在笔记本电脑上):
00:02.0 VGA 兼容控制器:英特尔公司设备 591b(修订版 04)
01:00.0 VGA 兼容控制器:NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile] (rev a1)
英特尔酷睿 i7 四核处理器 7700HQ(2.8GHz、3.8GHz Turbo)
在 17.04 中,我正在使用nvidia-375
驱动程序(如果记忆不错的话,是 build 66)。
升级后,我发现我的 Steam 游戏运行得很差。
在某些情况下,某些游戏似乎会导致机器过热,直至机器自动关闭。
我已经添加了graphics-drivers/ppa/ubuntu artful
存储库并切换到更高版本的nvidia-387
驱动程序,这似乎将性能提高到与我的 Ubuntu 升级之前类似的水平。
但是,有些游戏似乎仍然会导致我的机器过热并导致硬自动关机。
我尝试过探索一下日志/var/log
,但我的知识还不够,无法推断哪些信息是相关的,哪些不相关,是否真的存在是在这种情况下,日志中没有任何相关信息。
我已经做了初步的尽职调查,即检查是否有灰尘以及风扇是否运转(没有灰尘,两个风扇都运转)。
实际问题
我是不是当我问“如何解决这个问题并让我的游戏正常运行”时,我意识到,考虑到具体情况,回答这个问题有多么困难。
但是,我想了解在这种情况下建议必须收集哪些信息,以便我可以尝试自己调查,在这里提出更具体的问题,或者(可能更合适)将该信息传达给游戏供应商并请求支持。
如上所述,我强烈怀疑这与显卡驱动程序或 CPU 过热有关。
更新 1
我尝试使用其他几个 Nvidia 驱动程序版本复制了该问题。以下是我迄今为止尝试过的列表,它们都复制了该问题:
- 375.66 - 在 17.04 中运行良好,在 17.10 中图形滞后,并重复自动关机
- 384.90 - 未在 17.04 中尝试过,在 17.10 中图形滞后(但比 375.66 好),复制自动关机
- 387.12 - 与上下文中的 384.90 相比似乎没有区别
我还注意到,所有需要处理器速度的游戏都会重现该问题(有些似乎需要更长时间)。
最后一个发现很有趣,因为这意味着关机很可能是在 CPU 处于涡轮模式一段时间后触发的,而且可能与 GPU 无关。
"temperat*"
我已经在 中进行了 grep 查找/var/log
,但唯一匹配的条目是来自repowerd
,虽然我不太明白它们的意思,但它们显示了temperature=0.00
,我怀疑我可以将其视为上下文中的噪音。
我即将更改thermald
日志记录级别,并查看问题复制后是否有任何相关内容 - 稍后将更新。
更新 2
在设置以下调试流程后,我复制了该问题:
- [以管理员身份]
watch -n10 "sensors >> ~/sensors.log"
- [以管理员身份]
watch -n10 "hddtemp /dev/sda1 >> ~/hddtemp.log"
再次启动机器后跟踪这些文件表明以下看似可以接受的温度:
/dev/sda1: ST1000LX015-1U7172: 37°C
iwlwifi-virtual-0
Adapter: Virtual device
temp1: +54.0°C
acpitz-virtual-0
Adapter: Virtual device
temp1: +79.0°C
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +78.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +77.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +78.0°C (high = +100.0°C, crit = +100.0°C)
Core 2: +72.0°C (high = +100.0°C, crit = +100.0°C)
Core 3: +75.0°C (high = +100.0°C, crit = +100.0°C)
pch_skylake-virtual-0
Adapter: Virtual device
temp1: +75.5°C `
我已经thermald
从中提取了日志syslog
并将它们传输到另一个日志文件中以便于阅读。
在我的调试级别thermald
日志中,我尝试在发生的时间范围内寻找“常见”模式(我不知道如何真正读取该信息)。
有些条目在关闭发生时并未发生。
我的搜索包括“警告”、“错误”、“失败”、“严重”、“无效”等关键词。
以下是我可以分享的唯一发现——所有条目都重复,但不一定按此顺序...
sysfs read failed constraint_0_max_power_uw
- 发生在关机之前或即将关机时dram:powercap RAPL invalid max power limit range
failed to open /dev/acpi_thermal_rel
read_trip_points 1/trip_point_0_type:critical
index 0: type:critical temp:115000 hyst:1 zone id:1 sensor id:1 cdev size:0
Buggy max temp: to close to critical 90000
Core temp DTS :critical 100000, max 90000, psv 95000
由于我最初对日志的 grepthermald
有点宽,我还遇到了一些或许相关内核日志条目:
thermal thermal_zone2: failed to read out thermal zone (-5)
- 发生在接近关机时
这将缩小到接近关机复制时间的一个或两个条目。
但是,我仍然不知道如何读取这些数据,或者我是否在收集数据时完全被误导了。
也许我的watch
间隔应该更短?
也许实际上并没有过热,但一些(内核?)问题阻碍了正确读取温度?
欢迎任何澄清。
最后更新,题外话
我现在已经重新安装了 Ubuntu 17.04。
该问题未重现。
sensors
和中的数字hddtemp
略低于使用 17.10 测试的数字,但只是略低。
请注意,我需要在 17.04 上对内核进行参数化pci=noacpi
,以便能够正确启动/关闭。也许这有关系……我想我现在还是一无所知……
答案1
升级到 17.10 后,我也遇到了同样的问题。而且,我的规格也非常相似。
最后,我只需以 UEFI 模式启动。
它使我的 CPU 驱动程序表现得更加优化:
- 在 BIOS 启动模式下,性能调节器始终开启涡轮增压,并且当前频率始终等于最大频率。
- 在 UEFI 中,省电模式是首选,在需要时启动性能模式,并根据需要提高频率。
不再有过热问题。反复测试。
更新:我已采取的故障排除步骤
步骤1:检查日志/var/log
。系统和内核日志报告每次关机前几分钟温度达到较高水平:
11 月 12 日 13:36:20 内核:[899.138274] CPU0:程序包温度高于阈值,CPU 时钟节流(总事件数 = 1)
11 月 12 日 13:36:20 内核:[899.139245] CPU0:核心温度/速度正常
请注意,在同一秒内,它显示温度已恢复正常。很奇怪,但日志中没有其他可疑之处。
第2步:测量触发关机的温度。我过去常常lm-sensors
每秒观察传感器值并将结果转储到文件中。关机温度大约为 95 摄氏度 - 比通常应触发关机的 100 摄氏度少几度。
步骤3:测试各种电源/温度管理包,如、、、等tlp
——但它们都没有帮助。laptop-mode-tools
cpufreq
cpupower
步骤4:检查/sys/devices/system/cpu/cpu*/cpufreq
目录以寻找线索。我注意到scaling_cur_freq
,scaling_min_freq
和scaling_max_freq
文件始终显示相同的值,对我来说是 3500000。此外,3.5 GHz 是涡轮增压模式。很奇怪。
步骤5:用于cpupower
手动将 CPU 调节器更改为省电模式,然后限制 CPU。没有帮助。但是,即使命令成功,CPU 似乎也没有限制。
第 6 步:更改CPU驱动程序并intel_pstate
在grub配置文件中禁用。
步骤7:切换到其他显卡驱动程序——根本没有帮助。
步骤8:拆开笔记本电脑并清洁它 - 稍微好一点,但没有解决问题:)
步骤8:更改启动模式,因为它可能会影响低级驱动程序。之后我重复了第 4 步,发现 CPU 的行为确实有所不同。
也许其他人可以告诉我们这实际上是如何工作的:)