是否有一种简单安全的方法来触发易受影响的计算机上的GPU锁定?


8

回答我先前的问题,Ubuntu 12.04冻结,需要重启。我应该在日志中查找什么/ grep?,让我怀疑我的计算机正在间歇性地发生GPU锁定。通常每周一次,通常是在我使用Chrome时。今天发生在我在lucidchart上创建图表时

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

当计算机锁定时,我仍然可以插入。并且我想按照https://wiki.ubuntu.com/X/Troubleshooting/Freeze中提供的有关报告此问题的说明进行操作。

是否有(安全)方式导致GPU锁定,以便我可以继续进行并提交错误,而不是等到再次发生该错误?

Answers:


11

很好的问题。

工作量

/ 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运行

没有args的脚本将显示使用情况。部分是出于安全考虑(以防人们只是盲目地运行脚本),但主要是为了保持脚本的API整洁。

我出演过的影片可能是最好的开始。我将从一次只运行一个脚本开始,然后放几个小时。如果您的系统能够很好地存活下来,请尝试同时运行两个或多个。

注意,我本人还没有对这些超级工具进行过大量测试,因此不能保证它们没有错误。但是它们非常简短,脚本很容易修复,因此希望它们很好地受到欢迎。

还要注意,它们很可能会触发与您要解决的锁定无关的锁定。GPU锁定通常都与未经训练的眼睛看起来完全相同,因为它们或多或少具有完全相同的症状。

日志

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

如果您不在Intel Graphics上(在这种情况下您不在),或者没有看到生成的i915_error_state文件,那么要看dmesg和/var/log/kern.log。 有时,使用gpu锁定时,它们会指示GPU锁定是由或由其引起的。

开源的-ati驱动程序具有radeontool和avivotool,它们捕获寄存器状态。这些主要用于开源-ati,但这些工具也应与-fglrx一起使用。我从未见过它要求提供-fglrx错误,但是肯定不会造成伤害。

测试中

对于所有驱动程序,下一步通常是开始测试更新或较旧版本的驱动程序。对于专有驱动程序,您可以检查x-updates ppa,但可能必须从供应商网站下载并手动安装驱动程序(这样做会弄乱系统的包装)。对于像-intel,-nouveau,-ati这样的FOSS驱动程序,这意味着必须测试更新的内核或更新的mesa。我们在http://kernel.ubuntu.com/~kernel-ppa/mainline/提供了更新内核的打包版本。对于台面而言,有各种PPA,例如xorg-edgers。我也正在准备精确的8.0.3更新,我们认为该更新已修复了Intel Graphics的许多锁定。

无论如何,当找到可用的版本时,不要只是停下来。在工作版本和损坏的版本之间尝试其他版本。如果您可以将括号缩小到两个相邻的版本,那么这对于开发人员隔离导致补丁的补丁很有帮助。

贡献

在进行故障排除时,您可能会发现错误,或者可能会对脚本或文档进行改进。热烈欢迎对以上任何方面的贡献。使用Wiki文档,请继续进行编辑!我尝试至少每年更新一次,但是我并不总是了解它,下一个访问该页面的人一定会感谢您为改进它们所做的努力。

对于脚本本身的更改,也非常欢迎。将更改发送给我,但是您感觉很舒服-作为补丁,bzr或git分支,甚至只是脚本的副本。如果您打算进行很多更改,则首选带有合并建议的bzr分支;有关如何执行此操作的教程,请访问code.launchpad.net,如果有疑问,也可以随时在IRC上与我联系。

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

快速修复

如果您不希望进行上述任何调试,请参考以下随机提示:

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

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

最后

最后,有一个要求...请不要将有关“随机冻结”的错误报告提交给Launchpad,直到您如上所述进行了至少一些侦查为止。否则,您只会增加噪音。

我们确实尝试找出经过充分研究的错误报告;我们发现这些可以带来更高的收益,并且更有可能最终为发行版提供实际的解决方案。


谢谢您的回答。您是链接的疑难解答冻结Wiki的作者吗?似乎应该在此提到xdiagnose / workloads脚本-我会进行编辑,但不确定是否会像您一样做。另外,您在这里没有提到使用radeontool,但是在Wiki中提到了它。我仍然应该使用radeontool吗?
2012年

此外,以xdiagnose / workloads运行所有脚本(从已加星号开始依次运行)的脚本是否有用?最后,我在哪里可以学习如何提交更改?
2012年

这是我发现的第一个错误(我认为):do_chws_loop和do_glx_loop需要wmctrl,do_glx_loop需要glxgears,但是没有一个脚本“包含测试和安装所需功能的功能”。如自述文件所述。我可能可以开始添加这样的功能,但是我是否需要先提交错误然后进行修复?而且,如果我需要5行if ... else ...,还可以吗?还是有一种“首选方式”……这是否意味着脚本应该以root用户身份运行?...为什么需要“运行”参数?对不起所有问题,我只想能够提供帮助。
2012年

当然,没有问题,我将更新我的答案以涵盖这些问题。
布莱斯2012年

关于第三组问题。是的,在我的TODO列表中,让脚本对它们的需求进行了测试。如果...其他块无疑是一个很好的起点。最终,我希望能够让用户从GUI运行脚本,因此希望他们将其需求“传达”回GUI,以便在用户没有需求时将其灰显。但是,我离实现这一目标还有很长的路要走,因此仅需简单检查命令行即可开始。
布莱斯2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.