笔记本电脑自动关机故障排除的最佳必备条件是什么(可能是因为过热)
前提
我最近从17.04升级到17.10。
我有以下video卡和处理器(在笔记本电脑上):
00:02.0 VGA兼容控制器:Intel Corporation Device 591b(rev 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
驱动程序(如果内存服务则构建66)。
升级后,我注意到我的蒸汽游戏运行得非常糟糕。
在某些情况下,某些游戏似乎会使机器过热到自动关闭的程度。
我已经添加了graphics-drivers/ppa/ubuntu artful
存储库并切换到后来的nvidia-387
驱动程序,这似乎可以将性能提升到与我的Ubuntu升级之前相似的级别。
但是,有些游戏似乎仍然使我的机器过热并导致硬盘自动关机。
我已经尝试过探索/var/log
了,但我不知道哪些信息是相关的,哪些不是,在这种情况下日志中是否确实存在任何相关信息。
我做了最初的尽职调查,即检查灰尘和风扇工作(没有灰尘,两个风扇都工作)。
实际问题
我不是在问“如何解决这个问题并使我的游戏发挥作用”,我意识到在给定背景的情况下,回答有多难。
但是,我想了解这种情况的建议必须采集的是什么,以便我可以尝试自己调查,在这里提出更具体的问题,或者(可能更合适)将这些信息传达给游戏供应商并请求支持。
如上所述,我强烈怀疑这与video卡驱动程序或CPU过热有关。
更新1
我尝试并使用一些额外的Nvidia驱动程序版本复制了该问题。 这是我到目前为止尝试的列表,它们都复制了这个问题:
- 375.66 – 用于17.04的良好工作,17.10的滞后图形并重复自动关闭
- 384.90 – 未在17.04尝试,17.10中的滞后图形(但优于375.66),重复自动关闭
- 387.12 – 与上下文中的384.90相比似乎没有差别
我还注意到所有需要处理器速度的游戏都需要我的处理器上的turbo来复制问题(有些似乎需要更长的时间)。
最后一个发现很有意思,因为这意味着在CPU处于turbo模式一段时间后可能会触发关机,毕竟可能与GPU无关。
我已经在/var/log
了"temperat*"
,但是匹配的唯一条目来自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 `
我已经从syslog
获取了thermald
日志,并将它们传输到另一个日志文件中以便于阅读。
在我的调试级别的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
由于我对thermald
日志的初始grep有点宽,我还碰到了一些可能相关的内核日志条目:
-
thermal thermal_zone2: failed to read out thermal zone (-5)
– 发生接近关闭
这将缩小到接近关闭复制时间的一个或两个条目。
但是,我仍然不知道如何读取该数据,或者我是否完全误导了收集数据。
也许我的watch
间隔应该短得多?
也许实际上没有过热,但是一些(内核?)问题妨碍了正确读取温度?
任何澄清欢迎。
最后更新,偏离主题
我现在重新安装了Ubuntu 17.04。
这个问题没有复制。
sensors
和hddtemp
数据略低于17.10测试的数字,但仅略有下降。
请注意,我需要在17.04使用pci=noacpi
对内核进行参数化,以便能够正确启动/关闭。 也许这是相关的…我想我现在仍然无能为力……
我有同样的问题,在升级到17.10之后也开始了。 另外,我的规格很相似。
最后,我能够通过简单地在UEFI模式下启动来解决它。
它使我的CPU驱动程序表现得更加优化:
- 在BIOS启动模式下,性能调节器始终处于启动状态,并且当前频率始终等于最大频率。
- 在UEFI中,powersave是首选,其中性能模式在需要时启动并且根据需要频率上升。
没有更多的过热问题。 来回测试。
更新:我已采取的故障排除步骤
步骤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调控器更改为powersave,稍后再调节CPU。 没有帮助。 但是,看起来,即使命令成功,CPU也没有节流。
步骤6 :更改CPU驱动程序并禁用grub配置文件中的intel_pstate
。
第7步 :切换到替代显卡驱动程序 – 根本没有帮助。
第8步 :拆卸笔记本电脑并清理它 – TINY有点好,但没有解决问题:)
步骤8 :更改启动模式,因为它可能会影响低级驱动程序。 之后我重复了第4步,发现CPU的表现确实不同。
也许其他人将能够启发我们这实际上是如何工作的:)