Есть ли простой, безопасный способ вызвать блокировку графического процессора на восприимчивом компьютере?

8

Ответы на мой предыдущий вопрос, Ubuntu 12.04 застыла, требуя включения питания. Что я должен искать / grep в журналах? , заставили меня подозревать, что мой компьютер испытывает периодическую блокировку графического процессора. Это происходит примерно раз в неделю, обычно, когда я использую Chrome. Сегодня это произошло, когда я создавал диаграмму на lucidchart

У меня Dell Optiplex 755 с ATI Radeon HD 2400 XT и двумя мониторами, работающими в режиме Xinerama. Я использую 12.04 с установленным проприетарным драйвером ATI.

Когда компьютер зависает, я все еще могу войти в ssh. И я хотел бы следовать инструкциям по сообщению об этом, предоставленным по адресу https://wiki.ubuntu.com/X/Troublesho//Freeze.

Есть ли (безопасный) способ вызвать блокировку графического процессора, чтобы я мог продолжить и сообщить об ошибке, вместо того, чтобы ждать, пока это не произойдет снова?

Abe
источник

Ответы:

11

Отличный вопрос.

Нагрузки

В каталоге / 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

Обратите внимание, что для их запуска вам нужно пройти «запустить». Например:

$ do_glx_loop run

Без аргументов сценарии будут отображать использование. Частично это для безопасности (в случае, если люди просто слепо запускают скрипты), но в основном это для того, чтобы поддерживать API скриптов в чистоте.

Те, которые я снял, вероятно, являются лучшими для начала. Я бы начал с запуска только одного сценария за раз и позволил бы ему работать несколько часов. Если ваша система выживает достаточно хорошо, попробуйте запустить два или более одновременно.

Заметьте, я сам не тестировал эти супер-тесты, поэтому не могу обещать, что они не содержат ошибок. Но это довольно короткие и простые сценарии, которые, надеюсь, легко исправить, и исправления приветствуются.

Также обратите внимание, что они вполне могут вызвать блокировки, не связанные с той, которую вы пытаетесь решить. Блокировки графического процессора, как правило, выглядят так же, как у нетренированного глаза, так как они имеют те же симптомы, более или менее.

бревна

Если вы используете 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, которые регистрируют состояния регистров. Это в первую очередь для opensource -ati, но инструменты также должны работать с -fglrx. Я никогда не видел, чтобы он запрашивал ошибку -fglrx, но это точно не повредит.

тестирование

Для всех драйверов следующим шагом обычно является начало тестирования более новой или более старой версии драйвера. Для проприетарных драйверов вы можете проверить x-updates ppa, но, вероятно, вам придется загрузить и вручную установить драйвер с веб-сайта производителя (и при этом испортить упаковку вашей системы). Для драйверов FOSS, таких как -intel, -nouveau, -ati, это означает, что нужно тестировать либо новые ядра, либо новые mesa. Мы предоставляем упакованные сборки более новых ядер по адресу http://kernel.ubuntu.com/~kernel-ppa/mainline/ . Для mesa существуют различные PPA, такие как xorg-edgers. Я также готовлю обновление 8.0.3 для точного, который, как мы полагаем, исправляет ряд блокировок для Intel Graphics.

В любом случае, не останавливайтесь, когда найдете версию, которая работает. Попробуйте другие версии между вашей рабочей версией и сломанной. Если вы можете сузить скобку до двух смежных версий, это может быть чрезвычайно полезно для разработчиков при определении того, какой патч вызвал регрессию.

Содействие

По мере устранения неполадок вы можете обнаружить ошибки или усовершенствовать сценарии или документы. Вклад в любой из них горячо приветствуется. С вики-документами, пожалуйста, продолжайте редактировать! Я пытаюсь обновлять их, по крайней мере, один раз в год, но я не всегда дохожу до этого, и следующий парень, который посетит страницу, несомненно, оценит ваши усилия по их улучшению.

Для внесения изменений в сами скрипты, тоже вполне приветствуется. Присылайте мне изменения, как вам удобно - в виде патчей, ветки bzr или git или даже просто копий скрипта. Если вы планируете внести много изменений, предпочтительным способом будет ветка bzr с предложением о слиянии; учебные пособия о том, как это сделать, доступны на code.launchpad.net, или, если у вас есть вопросы, вы можете поймать меня на IRC.

Или, если вы не готовы углубиться в кодирование, но хотели бы отмечать ошибки или области, где требуется больше функциональности, вы можете подавать отчеты об ошибках обычным способом ( ubuntu-bug xdiagnose).

Быстрые исправления

Если вы не заинтересованы в выполнении какой-либо из вышеуказанных отладок, вот несколько случайных советов:

Для проприетарных драйверов попробуйте удалить и полностью удалить их из системы, а затем переустановить с нуля. Это, к сожалению, "решает" много ошибок ...

Для драйверов FOSS есть различные переключатели ядра, с которыми вы можете поиграть. Для ошибок 3D / mesa также есть возможность настроить различные параметры.

в заключение

Наконец, один запрос ... пожалуйста, не отправляйте отчеты об ошибках на Launchpad о "случайных зависаниях", пока вы не выполнили хотя бы небольшую проверку, как описано выше. В противном случае, вы просто добавили бы шум.

Мы стараемся выискивать хорошо изученные сообщения об ошибках; мы находим, что они дают более высокую отдачу от доллара, и гораздо более вероятно, что в итоге получится реальное исправление для дистрибутива.

Брайс
источник
Спасибо за ответ. Вы являетесь автором вики по устранению неполадок, связанных с устранением неполадок ? Кажется, что там должны быть упомянуты сценарии xdiagnose / workloads - я бы отредактировал, но не уверен, что сделал бы это так же, как и вы. Кроме того, вы здесь не упоминаете использование radeontool, но это упоминается в вики. Должен ли я все еще использовать radeontool в моем случае?
Абэ
Кроме того, будет ли полезен сценарий, который запускает все сценарии в xdiagnose / workloads, последовательно начиная с тех, которые вы поставили звездочкой? Наконец, где я могу узнать, как отправить изменения?
Абэ
Вот первая найденная ошибка (я думаю): do_chws_loop и do_glx_loop требует wmctrl, do_glx_loop требует glxgears, но ни один из скриптов «не включает в себя функциональность для тестирования и установки того, что ему нужно». как описано в README. Я мог бы начать добавлять такую ​​функциональность, но нужно ли сначала сообщать об ошибке, а затем исправлять ее? И это нормально, если мне понадобится пять строк, если ... еще ...? Или есть «предпочтительный способ» ... и означает ли это, что сценарии должны запускаться от имени пользователя root? ... зачем требовать аргумента "беги"? Извините за все вопросы, я просто хочу помочь, если смогу.
Абэ
Конечно, нет проблем, я обновлю свой ответ, чтобы охватить эти вопросы.
Брайс
Что касается вашего третьего набора вопросов. Да, наличие скриптов для проверки того, что им нужно, было в моем списке TODO. блоки if ... else, безусловно, являются хорошей отправной точкой. В конечном итоге я хотел бы иметь возможность разрешать пользователям запускать сценарии из графического интерфейса, поэтому хотел бы, чтобы они «сообщали» свои требования обратно в графический интерфейс, чтобы он мог выделиться серым цветом, если у пользователя нет требований. Но я далек от того, чтобы сделать это, поэтому для начала нужно просто проверять командную строку.
Брайс