笔记本电脑自动关机故障排除的最佳必备条件是什么(可能是因为过热)

前提

我最近从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。

这个问题没有复制。

sensorshddtemp数据略低于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步 :测试各种电源/温度管理软件包,如tlplaptop-mode-toolscpufreqcpupower等 – 它们都没有帮助。

第4步 :检查/sys/devices/system/cpu/cpu*/cpufreq目录中的线索。 我注意到scaling_cur_freqscaling_min_freqscaling_max_freq文件总是显示相同的值,对我来说是3500000。 3.5 GHz也是一种涡轮增压模式。 奇怪的。

步骤5 :使用cpupower手动将CPU调控器更改为powersave,稍后再调节CPU。 没有帮助。 但是,看起来,即使命令成功,CPU也没有节流。

步骤6 :更改CPU驱动程序并禁用grub配置文件中的intel_pstate

第7步 :切换到替代显卡驱动程序 – 根本没有帮助。

第8步 :拆卸笔记本电脑并清理它 – TINY有点好,但没有解决问题:)

步骤8 :更改启动模式,因为它可能会影响低级驱动程序。 之后我重复了第4步,发现CPU的表现确实不同。

也许其他人将能够启发我们这实际上是如何工作的:)