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.