¿Existe una manera simple y segura de activar un bloqueo de GPU en una computadora susceptible?

8

Las respuestas a mi pregunta anterior, Ubuntu 12.04 se congelaron, requiriendo powercycle. ¿Qué debo buscar / grep en los registros? , me han llevado a sospechar que mi computadora está experimentando un bloqueo intermitente de la GPU. Ha estado sucediendo aproximadamente una vez a la semana, generalmente cuando estoy usando Chrome. Hoy sucedió cuando estaba creando un diagrama en Lucidchart

Tengo un Dell Optiplex 755 con un ATI Radeon HD 2400 XT y dos monitores que se ejecutan en modo Xinerama. Estoy usando 12.04 con el controlador ATI patentado instalado.

Cuando la computadora se bloquea, aún puedo ingresar. Y me gustaría seguir las instrucciones sobre cómo informar esto que se proporcionan en https://wiki.ubuntu.com/X/Troubleshooting/Freeze

¿Hay alguna forma (segura) de causar un bloqueo de GPU para que pueda seguir adelante y presentar un error, en lugar de esperar hasta que vuelva a ocurrir?

Abe
fuente

Respuestas:

11

Excelente pregunta

Cargas de trabajo

El directorio / usr / share / xdiagnose / workloads tiene un conjunto de cargas de trabajo diseñadas para ejercitar su sistema de gráficos para activar bloqueos.

$ 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

Tenga en cuenta que para ejecutarlos debe pasar 'ejecutar'. P.ej:

$ do_glx_loop run

Sin argumentos, los scripts mostrarán el uso. En parte eso es por seguridad (en caso de que las personas simplemente ejecuten los scripts a ciegas), pero principalmente es para mantener ordenada la API de los scripts.

Los que he protagonizado son probablemente los mejores para empezar. Comenzaría ejecutando solo un script a la vez y lo dejaría pasar unas horas. Si su sistema sobrevive lo suficientemente bien, intente ejecutar dos o más simultáneamente.

Tenga en cuenta que no los he probado demasiado, así que no puedo prometer que estén libres de errores. Pero son scripts bastante cortos y simples, así que espero que sean fáciles de arreglar, y los parches son bienvenidos.

También tenga en cuenta que es muy probable que puedan desencadenar bloqueos no relacionados con el que está tratando de resolver. Los bloqueos de GPU generalmente se ven idénticos al ojo no entrenado ya que tienen exactamente los mismos síntomas, más o menos.

Registros

Si está en Intel Graphics, hay un / sys / kernel / debug / dri / 0 / i915_error_state que desea. Esta es una instantánea del estado del registro en el momento del bloqueo, y la parte superior contiene algunos códigos de error. IPEHR, PGTBL_ER, ESR, EIR. Haga coincidir esos códigos para ver si tiene el mismo error o un error similar.

Si no está en Intel Graphics (como en este caso no lo está), o si no está viendo los archivos i915_error_state generados, entonces dmesg y /var/log/kern.log son lo que debe mirar. A veces, con los bloqueos de gpu, indicarán por qué se produjo el bloqueo de la GPU.

El controlador de código abierto -ati tiene radeontool y avivotool, que capturan estados de registro. Estos son principalmente para el código abierto -ati, pero las herramientas también deberían funcionar con -fglrx. Nunca he visto que solicite un error -fglrx, pero ciertamente no puede hacer daño.

Pruebas

Para todos los controladores, el siguiente paso suele ser comenzar a probar versiones más nuevas o más antiguas del controlador. Para los controladores propietarios, puede consultar el x-updates ppa, pero probablemente tendrá que descargar e instalar manualmente el controlador desde el sitio web del proveedor (y estropear el paquete de su sistema al hacerlo). Para controladores FOSS como -intel, -nouveau, -ati, eso significa probar los núcleos más nuevos o la mesa más nueva. Proporcionamos compilaciones compiladas de núcleos más nuevos en http://kernel.ubuntu.com/~kernel-ppa/mainline/ . Para la mesa, hay varios PPA, como xorg-edgers. También estoy en proceso de preparar una actualización 8.0.3 para precisión, que creemos soluciona una serie de bloqueos para Intel Graphics.

En cualquier caso, no te detengas cuando encuentres una versión que funcione. Pruebe otras versiones entre su versión de trabajo y la versión rota. Si puede reducir el soporte a dos versiones adyacentes, eso puede ser de gran ayuda para los desarrolladores al aislar qué parche causó la regresión.

Contribuyendo

A medida que avanza en la resolución de problemas, puede detectar errores o encontrar mejoras para los scripts o documentos. Las contribuciones a cualquiera de estos son bienvenidas. Con los documentos de wiki, ¡simplemente adelante y edite! Intento actualizarlos al menos una vez al año, pero no siempre lo hago, y el próximo usuario que visite la página seguramente apreciará su esfuerzo para mejorarlos.

Para los cambios en los scripts en sí, también bastante bienvenido. Envíeme los cambios como se sienta cómodo, como parches, una rama bzr o git, o incluso solo copias del script. Si planea hacer muchos cambios, una rama bzr con una propuesta de fusión es la forma preferida; los tutoriales sobre cómo hacer esto están disponibles en code.launchpad.net, o siéntase libre de encontrarme en IRC si tiene alguna pregunta.

O, si no está listo para profundizar en la codificación pero desea marcar errores o áreas donde se necesita más funcionalidad, puede presentar informes de errores de la manera habitual ( ubuntu-bug xdiagnose).

Arreglos rápidos

Si no está interesado en realizar ninguna de las depuraciones anteriores, aquí hay algunos consejos al azar:

Para controladores propietarios, intente desinstalarlos y purgarlos completamente de su sistema, luego reinstale desde cero. Desafortunadamente, esto "resuelve" muchos errores ...

Para los controladores FOSS, hay varios conmutadores de kernel con los que puede jugar. Para los errores 3D / mesa, también hay driconf para ajustar varias configuraciones.

Finalmente

Finalmente, una solicitud ... por favor, no envíe informes de errores a Launchpad sobre "bloqueos aleatorios" hasta que haya realizado al menos un poco de investigación como se describe anteriormente. De lo contrario, solo estarías aumentando el ruido.

Intentamos obtener informes de errores bien investigados; descubrimos que estos ofrecen una mayor inversión por el dinero, y es mucho más probable que terminen con una solución real para la distribución.

Bryce
fuente
Gracias por sus respuestas. ¿Eres el autor de la wiki de congelación de solución de problemas vinculada ? Parece que los scripts de xdiagnose / workloads deberían mencionarse allí: editaría, pero no estoy seguro de hacerlo tan bien como usted. Además, no menciona el uso de radeontool aquí, pero se menciona en la wiki. ¿Debo seguir usando radeontool en mi caso?
Abe
Además, ¿sería útil un script que ejecutara todos los scripts en xdiagnose / workloads, comenzando secuencialmente con los que tenía asterisco? Finalmente, ¿dónde puedo aprender cómo enviar cambios?
Abe
Aquí está el primer error que encontré (creo): do_chws_loop y do_glx_loop requiere wmctrl, do_glx_loop requiere glxgears, pero ninguna secuencia de comandos "incluye funcionalidad para probar e instalar lo que necesita". como se describe en README. Probablemente podría comenzar a agregar dicha funcionalidad, pero ¿debo enviar primero un error y luego corregirlo? Y, ¿está bien si me toma cinco líneas de si ... más ...? ¿O hay una 'forma preferida' ... y esto significa que los scripts deben ejecutarse como root? ... ¿por qué requieren un argumento de "ejecución"? Perdón por todas las preguntas, solo quiero poder ayudar si puedo.
Abe
Claro, no hay problema, actualizaré mi respuesta para cubrir esos puntos.
Bryce
En cuanto a su tercer conjunto de preguntas. Sí, tener las pruebas de scripts para lo que necesitan ha estado en mi lista TODO. si ... de lo contrario, los bloques son un buen punto de partida. En última instancia, me gustaría poder permitir que los usuarios ejecuten los scripts desde una GUI, por lo que me gustaría que "comuniquen" sus requisitos a la GUI para que pueda atenuarlos si el usuario no tiene los requisitos. Pero estoy muy lejos de poder hacer eso, por lo que solo verificaciones simples para la línea de comando es el lugar correcto para comenzar.
Bryce