有没有一种简单、安全的方法来触发易受攻击的计算机上的 GPU 锁定?

有没有一种简单、安全的方法来触发易受攻击的计算机上的 GPU 锁定?

我上一个问题的答案是,Ubuntu 12.04 冻结,需要关闭电源。我应该在日志中查找/ grep 什么?,让我怀疑我的电脑正在经历间歇性的 GPU 锁定。这种情况大约每周发生一次,通常是在我使用 Chrome 时。今天,当我在清晰图表

我有一台 Dell Optiplex 755,配有 ATI Radeon HD 2400 XT 和双显示器,运行 Xinerama 模式。我使用的是 12.04,安装了专有的 ATI 驱动程序。

当计算机死机时,我仍然可以通过 ssh 登录。我想按照以下说明报告此问题:https://wiki.ubuntu.com/X/Troubleshooting/Freeze

是否有一种(安全的)方法可以导致 GPU 锁定,以便我可以继续提交错误,而不是等到它再次发生?

答案1

好问题。

工作负载

/usr/share/xdiagnose/workloads 目录有一组工作负载,旨在锻炼您的图形系统以触发锁定。

$ ls /usr/share/xdiagnose/workloads/
README                       do_monitor_rotation_loop
do_chws_loop*                do_screensaver_loop*
do_cpu_spin_loop             do_video_loop*
do_disk_write_loop           do_vtswitch_loop*
do_glx_loop*                 repro.sh
do_kernel_compile_loop       run_workloads
do_monitor_disable_loop*     youtube-loop.html
do_monitor_resolution_loop*  youtube-reload.html

请注意,要运行它们,您需要传递“run”。例如:

$ do_glx_loop 运行

如果没有参数,脚本将显示使用情况。部分原因是为了安全(以防有人盲目运行脚本),但主要原因是为了保持脚本的 API 整洁。

我加星标的脚本可能是最好的入门脚本。我会先一次只运行一个脚本,让它运行几个小时。如果您的系统能够很好地运行,那么请尝试同时运行两个或更多脚本。

注意,我本人尚未对这些进行过严格测试,因此不能保证它们没有错误。但它们是相当简短和简单的脚本,因此希望易于修复,并且非常欢迎良好的补丁。

还请注意,它们很可能会触发与您要解决的问题无关的锁定。GPU 锁定在外行人看来通常都是一样的,因为它们或多或少具有完全相同的症状。

日志

如果您使用的是 Intel Graphics,则有一个您需要的 /sys/kernel/debug/dri/0/i915_error_state。这是挂起时寄存器状态的快照,其顶部包含一些错误代码。IPEHR、PGTBL_ER、ESR、EIR。将这些代码匹配起来,看看您是否有相同或相似的错误。

如果您没有使用英特尔显卡(在这种情况下您没有使用),或者您没有看到生成的 i915_error_state 文件,那么您应该查看 dmesg 和 /var/log/kern.log。 有时对于 GPU 锁定,它们将指示 GPU 锁定是由什么原因造成的。

开源 -ati 驱动程序有 radeontool 和 avivotool,它们可以捕获寄存器状态。这些工具主要用于开源 -ati,但这些工具也应该适用于 -fglrx。我从未见过有人要求它修复 -fglrx 错误,但这肯定不会有什么坏处。

测试

对于所有驱动程序,下一步通常是开始测试驱动程序的较新或较旧版本。对于专有驱动程序,您可以检查 x-updates ppa,但可能必须从供应商网站下载并手动安装驱动程序(这样做会弄乱系统的包装)。对于 FOSS 驱动程序(如 -intel、-nouveau、-ati),这意味着测试较新的内核或较新的 mesa。我们在以下位置提供较新内核的打包版本http://kernel.ubuntu.com/~kernel-ppa/mainline/对于 mesa,有各种 PPA,例如 xorg-edgers。我还在准备 precise 的 8.0.3 更新,我们相信它修复了英特尔显卡的许多死机问题。

无论如何,找到一个可以运行的版本后不要就此止步。在运行版本和损坏版本之间尝试其他版本。如果可以将范围缩小到两个相邻的版本,那么这对开发人员找出导致回归的补丁将大有帮助。

贡献

在进行故障排除时,您可能会发现错误,或者可能会对脚本或文档提出改进意见。我们热烈欢迎您为这些做出贡献。对于 wiki 文档,请继续编辑!我尝试至少每年更新一次,但我并不总是有时间这样做,下一个访问该页面的人肯定会感谢您为改进它们所做的努力。

对于脚本本身的更改,也非常欢迎。您可以随意将更改发送给我 - 作为补丁、bzr 或 git 分支,甚至只是脚本的副本。如果您计划进行大量更改,最好使用带有合并提议的 bzr 分支;有关如何执行此操作的教程可在 code.launchpad.net 上找到,或者如果您有任何问题,请随时在 IRC 上联系我。

或者,如果您还没有准备好深入研究编码,但想要标记错误或需要更多功能的区域,您可以按照通常的方式提交错误报告(ubuntu-bug xdiagnose)。

快速修复

如果您对进行上述任何调试不感兴趣,这里有一些随机提示:

对于专有驱动程序,请尝试从系统中完全卸载并清除它们,然后从头开始重新安装。不幸的是,这“解决”了一个很多的错误...

对于 FOSS 驱动程序,有各种内核开关可供您尝试。对于 3D/mesa 错误,还有 driconf 来调整各种设置。

最后

最后,一个请求... 请不要向 Launchpad 提交有关“随机冻结”的错误报告,除非您至少已经完成了上述一些侦查工作。否则,您只会增加噪音。

我们确实尝试找出经过充分研究的错误报告;我们发现这些报告的性价比更高,并且更有可能最终为发行版提供真正的修复。

相关内容