很好的问题。
工作量
/ 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,直到您如上所述进行了至少一些侦查为止。否则,您只会增加噪音。
我们确实尝试找出经过充分研究的错误报告;我们发现这些可以带来更高的收益,并且更有可能最终为发行版提供实际的解决方案。