Czy istnieje prosty, bezpieczny sposób na uruchomienie blokady GPU na podatnym komputerze?

8

Odpowiedzi na moje poprzednie pytanie, Ubuntu 12.04 zastygł, wymagając zasilania. Czego powinienem szukać / grep w logach? , doprowadziło mnie do podejrzenia, że ​​na moim komputerze występuje przerywana blokada GPU. Dzieje się to mniej więcej raz w tygodniu, zwykle gdy używam Chrome. Dzisiaj stało się, kiedy tworzyłem schemat na lucidchart

Mam Dell Optiplex 755 z ATI Radeon HD 2400 XT i podwójnymi monitorami działającymi w trybie Xinerama. Używam 12.04 z zainstalowanym zastrzeżonym sterownikiem ATI.

Gdy komputer się blokuje, nadal mogę ssh. I chciałbym postępować zgodnie z instrukcjami dotyczącymi zgłaszania tego, dostępnymi na https://wiki.ubuntu.com/X/Troublesh/Freeze

Czy istnieje (bezpieczny) sposób, aby spowodować blokadę procesora graficznego, abym mógł zgłosić błąd i zamiast czekać, aż to się powtórzy?

Abe
źródło

Odpowiedzi:

11

Doskonałe pytanie.

Obciążenia

Katalog / usr / share / xdiagnose / workloads zawiera zestaw obciążeń zaprojektowanych do ćwiczenia systemu graficznego w celu wyzwalania blokowania.

$ 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

Pamiętaj, że aby je uruchomić, musisz przejść „bieg”. Na przykład:

$ do_glx_loop run

Bez argumentów skrypty wyświetlą użycie. Częściowo jest to związane z bezpieczeństwem (w przypadku, gdy ludzie po prostu uruchamiają skrypty na ślepo), ale przede wszystkim ma to na celu utrzymanie interfejsu API skryptów w porządku.

Te, które oznaczyłem gwiazdą, są prawdopodobnie najlepszymi na początek. Zacząłem od uruchomienia tylko jednego skryptu na raz i pozostawienie go na kilka godzin. Jeśli twój system przetrwa wystarczająco dobrze, spróbuj uruchomić dwa lub więcej jednocześnie.

Uwaga: Nie testowałem tych super bardzo osobiście, więc nie mogę obiecać, że są wolne od błędów. Są to jednak krótkie i proste skrypty, więc mam nadzieję, że łatwo je naprawić, a łatki są bardzo mile widziane.

Pamiętaj też, że mogą one powodować blokady niezwiązane z tą, którą próbujesz rozwiązać. Blokady GPU ogólnie wyglądają identycznie jak niewytrenowane oko, ponieważ mają dokładnie takie same objawy, mniej więcej.

Kłody

Jeśli korzystasz z karty graficznej Intel, istnieje żądany stan / sys / kernel / debug / dri / 0 / i915_error_state. Jest to migawka stanu rejestru w momencie zawieszenia, a jego górna część zawiera niektóre kody błędów. IPEHR, PGTBL_ER, ESR, EIR. Dopasuj te kody, aby sprawdzić, czy występuje ten sam lub podobny błąd.

Jeśli nie korzystasz z grafiki Intel (tak jak w tym przypadku, nie masz) lub jeśli nie widzisz wygenerowanych plików i915_error_state, to na co zwrócić uwagę dmesg i /var/log/kern.log. Czasami z blokadami GPU będą wskazywać, co spowodowało blokowanie GPU lub przez nie.

Sterownik open source -ati ma narzędzie radeontool i avivotool, które przechwytują stany rejestru. Są one przede wszystkim dla -ati opensource, ale narzędzia powinny również współpracować z -fglrx. Nigdy nie widziałem, aby zażądano błędu -fglrx, ale z pewnością nie zaszkodzi.

Testowanie

W przypadku wszystkich sterowników następnym krokiem jest zazwyczaj rozpoczęcie testowania nowszych lub starszych wersji sterownika. W przypadku sterowników zastrzeżonych możesz sprawdzić x-aktualizacje ppa, ale prawdopodobnie będziesz musiał pobrać i ręcznie zainstalować sterownik ze strony internetowej dostawcy (i przy tym popsuć opakowanie systemu). W przypadku sterowników FOSS, takich jak -intel, -nouveau, -ati, oznacza to testowanie nowszych jąder lub nowszych mesa. Zapewniamy spakowane wersje nowszych jąder na stronie http://kernel.ubuntu.com/~kernel-ppa/mainline/ . W przypadku mesa istnieją różne umowy PPA, takie jak xorg-edger. Jestem również w trakcie przygotowywania aktualizacji 8.0.3 do precyzyjnych, które naszym zdaniem naprawiają szereg blokad dla Intel Graphics.

W każdym razie nie przestawaj, gdy znajdziesz wersję, która działa. Wypróbuj inne wersje między wersją roboczą a wersją uszkodzoną. Jeśli możesz zawęzić zakres do dwóch sąsiednich wersji, może to być bardzo pomocne dla programistów w określeniu, która łatka spowodowała regresję.

Wnosząc wkład

Podczas rozwiązywania problemów możesz zauważyć błędy lub ulepszenia skryptów lub dokumentów. Wkład w którekolwiek z nich jest bardzo mile widziany. Z dokumentami wiki, proszę po prostu edytuj! Staram się je aktualizować przynajmniej raz w roku, ale nie zawsze sobie z tym radzę, a następny gość, który odwiedzi stronę, z pewnością doceni twój wysiłek w celu ich ulepszenia.

Również zmiany w samych skryptach są mile widziane. Wysyłaj mi zmiany, ale czujesz się komfortowo - jako łatki, gałąź bzr lub git, a nawet po prostu kopie skryptu. Jeśli planujesz wprowadzić wiele zmian, preferowanym sposobem jest gałąź bzr z propozycją scalenia; samouczki na temat tego, jak to zrobić, są dostępne na code.launchpad.net, lub możesz złapać mnie na IRC, jeśli masz pytania.

Lub, jeśli nie jesteś gotowy zagłębić się w kodowanie, ale chcesz oznaczyć błędy lub obszary, w których potrzebna jest większa funkcjonalność, możesz zgłaszać błędy w zwykły sposób ( ubuntu-bug xdiagnose).

Szybkie poprawki

Jeśli nie chcesz wykonywać żadnego z powyższych debugowania, oto kilka losowych wskazówek:

W przypadku zastrzeżonych sterowników spróbuj odinstalować je i całkowicie usunąć z systemu, a następnie zainstaluj ponownie od zera. To niestety „rozwiązuje” wiele błędów ...

W przypadku sterowników FOSS dostępne są różne przełączniki jądra, którymi można się bawić. W przypadku błędów 3D / mesa dostępny jest również program Driconf umożliwiający dostosowanie różnych ustawień.

Wreszcie

Na koniec jedna prośba ... nie przesyłaj raportów o błędach do Launchpada dotyczących „losowych zawieszeń”, dopóki nie wykonasz choćby odrobiny spóźnienia, takiego jak opisano powyżej. W przeciwnym razie po prostu zwiększałbyś hałas.

Próbujemy wyśledzić dobrze zbadane zgłoszenia błędów; uważamy, że dają one większy huk za grosze i są bardziej prawdopodobne, że skończą z faktyczną poprawką dla dystrybucji.

Bryce
źródło
Dziękuję Ci za Twoje odpowiedzi. Czy jesteś autorem powiązanej zamrożonej wiki wiki ? Wydaje się, że należy wspomnieć o skryptach xdiagnose / workloads - edytowałbym, ale nie jestem pewien, czy zrobiłbym to tak dobrze, jak ty. Nie wspominasz też o użyciu radeontool, ale jest to wspomniane na wiki. Czy nadal powinienem używać narzędzia radeontool w moim przypadku?
Abe
również, czy skrypt, który uruchamiałby wszystkie skrypty w xdiagnose / workloads, zaczynając od tych, które zostały oznaczone gwiazdką, byłby przydatny? Wreszcie, gdzie mogę dowiedzieć się, jak przesyłać zmiany?
Abe
Oto pierwszy błąd, który znalazłem (myślę): do_chws_loop i do_glx_loop wymaga wmctrl, do_glx_loop wymaga glxgears, ale żaden skrypt „nie zawiera funkcji testowania i instalowania tego, czego potrzebuje”. jak opisano w README. Prawdopodobnie mógłbym zacząć dodawać taką funkcjonalność, ale czy najpierw muszę zgłosić błąd, a następnie go naprawić? I czy jest w porządku, jeśli zajmie mi to pięć linijek, jeśli ... inaczej ...? A może istnieje „preferowany sposób” ... i czy to oznacza, że ​​skrypty powinny być uruchamiane jako root? ... po co wymagać argumentu „uruchom”? Przepraszam za wszystkie pytania, chcę tylko móc pomóc, jeśli mogę.
Abe
Jasne, nie ma problemu, zaktualizuję moją odpowiedź, aby uwzględnić te punkty.
Bryce
Co do twojego trzeciego zestawu pytań. Tak, testowanie skryptów pod kątem tego, czego potrzebują, znajduje się na mojej liście TODO. jeśli ... inaczej bloki są z pewnością dobrym punktem wyjścia. Ostatecznie chciałbym umożliwić użytkownikom uruchamianie skryptów z GUI, więc chciałbym, aby „komunikowali” swoje wymagania z powrotem do GUI, aby mógł je wyszarzyć, jeśli użytkownik nie ma wymagań. Ale daleko mi do tego, aby to zrobić, więc proste sprawdzanie wiersza poleceń jest właściwym miejscem do rozpoczęcia.
Bryce