Gibt es eine einfache und sichere Möglichkeit, eine GPU-Sperrung auf einem anfälligen Computer auszulösen?

8

Die Antworten auf meine vorherige Frage, Ubuntu 12.04, sind eingefroren und erfordern ein Powercycle. Worauf sollte ich in den Protokollen achten? Ich habe den Verdacht, dass auf meinem Computer eine zeitweise GPU-Sperrung auftritt. Es passiert ungefähr einmal pro Woche, normalerweise wenn ich Chrome verwende. Heute ist es passiert, als ich ein Diagramm auf lucidchart erstellt habe

Ich habe einen Dell Optiplex 755 mit einer ATI Radeon HD 2400 XT und zwei Monitoren im Xinerama-Modus. Ich verwende 12.04 mit dem proprietären ATI-Treiber installiert.

Wenn der Computer abstürzt, kann ich mich immer noch anmelden. Ich möchte die Anweisungen zum Melden unter https://wiki.ubuntu.com/X/Troubleshooting/Freeze befolgen

Gibt es eine (sichere) Möglichkeit, eine GPU-Sperrung zu verursachen, damit ich einen Fehler melden kann, anstatt zu warten, bis er erneut auftritt?

Abe
quelle

Antworten:

11

Ausgezeichnete Frage.

Arbeitslasten

Das Verzeichnis / usr / share / xdiagnose / workloads enthält eine Reihe von Workloads, mit denen Sie Ihr Grafiksystem trainieren können, um Abstürze auszulösen.

$ 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

Beachten Sie, dass Sie zum Ausführen von 'run' übergeben müssen. Z.B:

$ do_glx_loop run

Ohne Argumente zeigen die Skripte die Verwendung an. Dies dient zum Teil der Sicherheit (für den Fall, dass Benutzer die Skripte nur blind ausführen), zum größten Teil jedoch dazu, die API der Skripte aufgeräumt zu halten.

Diejenigen, die ich in der Hauptrolle gespielt habe, sind wahrscheinlich die besten, mit denen ich anfangen kann. Ich würde damit beginnen, jeweils nur ein Skript auszuführen und es einige Stunden lang laufen zu lassen. Wenn Ihr System so gut überlebt, versuchen Sie, zwei oder mehr gleichzeitig auszuführen.

Hinweis: Ich habe diese nicht besonders stark getestet und kann daher nicht versprechen, dass sie fehlerfrei sind. Aber es sind ziemlich kurze und einfache Skripte, die hoffentlich leicht zu reparieren sind, und Patches sind sehr willkommen.

Beachten Sie auch, dass sie höchstwahrscheinlich Abstürze auslösen können, die nichts mit dem zu tun haben, den Sie lösen möchten. GPU-Abstürze sehen im Allgemeinen alle identisch mit dem ungeübten Auge aus, da sie mehr oder weniger genau dieselben Symptome aufweisen.

Protokolle

Wenn Sie mit Intel Graphics arbeiten, gibt es einen / sys / kernel / debug / dri / 0 / i915_error_state, den Sie möchten. Dies ist eine Momentaufnahme des Registerstatus zum Zeitpunkt des Hängens, und oben befinden sich einige Fehlercodes. IPEHR, PGTBL_ER, ESR, EIR. Ordnen Sie diese Codes zu, um festzustellen, ob Sie den gleichen oder einen ähnlichen Fehler haben.

Wenn Sie nicht mit Intel Graphics arbeiten (wie in diesem Fall nicht) oder wenn keine i915_error_state-Dateien generiert werden, sollten Sie sich dmesg und /var/log/kern.log ansehen. Manchmal geben sie bei GPU-Sperren an, durch was oder in welcher GPU-Sperre verursacht wurde.

Der Open Source -ati-Treiber verfügt über Radeontool und Avivotool, die Registerzustände erfassen. Diese sind hauptsächlich für die OpenSource -ati bestimmt, aber die Tools sollten auch mit -fglrx funktionieren. Ich habe noch nie gesehen, dass es nach einem -fglrx-Fehler gefragt wurde, aber es kann sicherlich nicht schaden.

Testen

Für alle Treiber besteht der nächste Schritt normalerweise darin, entweder neuere oder ältere Versionen des Treibers zu testen. Bei proprietären Treibern können Sie die ppa der x-Updates überprüfen, aber wahrscheinlich müssen Sie den Treiber von der Website des Anbieters herunterladen und manuell installieren (und dabei die Verpackung Ihres Systems durcheinander bringen). Für FOSS-Treiber wie -intel, -nouveau, -ati bedeutet dies, entweder neuere Kernel oder neuere Mesa zu testen. Unter http://kernel.ubuntu.com/~kernel-ppa/mainline/ bieten wir gepackte Builds neuerer Kernel an . Für Mesa gibt es verschiedene PPAs wie Xorg-Edger. Ich bin auch dabei, ein 8.0.3-Update für präzise vorzubereiten, von dem wir glauben, dass es eine Reihe von Abstürzen für Intel Graphics behebt.

Hören Sie auf keinen Fall einfach auf, wenn Sie eine funktionierende Version finden. Probieren Sie andere Versionen zwischen Ihrer Arbeitsversion und der defekten aus. Wenn Sie die Klammer auf zwei benachbarte Versionen eingrenzen können, kann dies für die Entwickler sehr hilfreich sein, um herauszufinden, welcher Patch die Regression verursacht hat.

Mitwirken

Während Sie die Fehlerbehebung durchführen, werden Sie möglicherweise Fehler entdecken oder Verbesserungen für die Skripte oder Dokumente finden. Beiträge zu diesen Themen sind herzlich willkommen. Mit den Wiki-Dokumenten können Sie einfach weitermachen und bearbeiten! Ich versuche, sie mindestens einmal im Jahr zu aktualisieren, aber ich komme nicht immer dazu, und der nächste, der die Seite besucht, wird Ihre Bemühungen, sie zu verbessern, sicherlich zu schätzen wissen.

Für Änderungen an den Skripten selbst auch sehr zu begrüßen. Senden Sie mir Änderungen, wie auch immer Sie sich wohl fühlen - als Patches, als BZR- oder Git-Zweig oder auch nur als Kopien des Skripts. Wenn Sie viele Änderungen vornehmen möchten, ist ein bzr-Zweig mit einem Zusammenführungsvorschlag der bevorzugte Weg. Tutorials dazu finden Sie unter code.launchpad.net. Wenn Sie Fragen haben, können Sie mich gerne im IRC abrufen.

Wenn Sie nicht bereit sind, sich mit Codierung zu befassen, aber Fehler oder Bereiche markieren möchten, in denen mehr Funktionen benötigt werden, können Sie Fehlerberichte auf die übliche Weise einreichen ( ubuntu-bug xdiagnose).

Schnellkorrekturen

Wenn Sie nicht an einem der oben genannten Debugging-Vorgänge interessiert sind, finden Sie hier einige zufällige Tipps:

Versuchen Sie bei proprietären Treibern, diese zu deinstallieren und vollständig von Ihrem System zu entfernen, und installieren Sie sie dann von Grund auf neu. Dies "löst" leider viele Fehler ...

Für die FOSS-Treiber gibt es verschiedene Kernel-Switches, mit denen Sie herumspielen können. Für 3D / Mesa-Fehler gibt es auch driconf, um verschiedene Einstellungen zu optimieren.

Schließlich

Zum Schluss noch eine Anfrage ... Bitte senden Sie keine Fehlerberichte über "zufällige Einfrierungen" an Launchpad, bis Sie mindestens ein wenig nach oben beschrieben gesucht haben. Andernfalls würden Sie nur das Rauschen verstärken.

Wir versuchen, gut recherchierte Fehlerberichte herauszufischen. Wir finden, dass diese einen höheren Knall für das Geld geben und viel wahrscheinlicher zu einer tatsächlichen Lösung für die Distribution führen.

Bryce
quelle
Danke für deine Antworten. Sind Sie der Autor des verknüpften Freeze-Shooting-Freeze-Wikis ? Es scheint, dass die xdiagnose / workloads-Skripte dort erwähnt werden sollten - ich würde sie bearbeiten, bin mir aber nicht sicher, ob ich sie genauso gut machen würde wie Sie. Sie erwähnen hier auch nicht die Verwendung von Radeontool, aber es wird im Wiki erwähnt. Sollte ich in meinem Fall immer noch Radeontool verwenden?
Abe
Wäre ein Skript nützlich, das alle Skripte in xdiagnose / workloads ausführt und nacheinander mit den Skripten beginnt, die Sie mit einem Sternchen versehen haben? Wo kann ich schließlich lernen, wie man Änderungen einreicht?
Abe
Hier ist der erste Fehler, den ich gefunden habe (glaube ich): do_chws_loop und do_glx_loop erfordern wmctrl, do_glx_loop erfordert glxgears, aber keines der Skripte "enthält Funktionen zum Testen und Installieren dessen, was es benötigt". wie in README beschrieben. Ich könnte wahrscheinlich anfangen, solche Funktionen hinzuzufügen, aber muss ich zuerst einen Fehler einreichen und ihn dann beheben? Und ist es in Ordnung, wenn ich fünf Zeilen brauche, wenn ... sonst ...? Oder gibt es einen "bevorzugten Weg" ... und bedeutet dies, dass die Skripte als root ausgeführt werden sollten? ... warum ein "run" -Argument benötigen? Entschuldigung für alle Fragen, ich möchte nur helfen können, wenn ich kann.
Abe
Klar, kein Problem, ich werde meine Antwort aktualisieren, um diese Punkte abzudecken.
Bryce
Zu Ihrer dritten Reihe von Fragen. Ja, die Skripte auf ihre Anforderungen testen zu lassen, stand auf meiner TODO-Liste. wenn ... sonst sind Blöcke sicherlich ein guter Ausgangspunkt. Letztendlich möchte ich in der Lage sein, Benutzer die Skripte über eine GUI ausführen zu lassen, und möchte, dass sie ihre Anforderungen an die GUI "kommunizieren", damit sie ausgegraut werden können, wenn der Benutzer die Anforderungen nicht hat. Aber ich bin weit davon entfernt, dies zu tun. Nur einfache Überprüfungen der Befehlszeile sind der richtige Ausgangspunkt.
Bryce