취약한 컴퓨터에서 GPU 잠금을 트리거하는 간단하고 안전한 방법이 있습니까?


8

이전 질문 인 Ubuntu 12.04 에 대한 답변이 중단되어 전원을 껐다 켜야합니다. 로그에서 무엇을보고 grep해야합니까? , 컴퓨터에 간헐적으로 GPU 잠금이 발생하는 것으로 의심됩니다. 일주일에 한 번, 일반적으로 Chrome을 사용할 때 발생했습니다. 오늘은 lucidchart에 다이어그램을 만들 때 발생 했습니다.

ATI Radeon HD 2400 XT 및 Xinerama 모드에서 실행되는 듀얼 모니터가 장착 된 Dell Optiplex 755가 있습니다. 독점 ATI 드라이버가 설치된 12.04를 사용하고 있습니다.

컴퓨터가 잠기더라도 여전히 ssh in 할 수 있습니다. https://wiki.ubuntu.com/X/Troubleshooting/Freeze 에서 제공되는보고에 대한 지침을 따르고 싶습니다.

GPU 잠금을 발생시켜 다시 발생할 때까지 기다리지 않고 버그를 제기 할 수있는 안전한 방법이 있습니까?

답변:


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

그것들을 실행하려면 'run'을 통과해야합니다. 예 :

$ do_glx_loop 실행

인수가 없으면 스크립트에 사용법이 표시됩니다. 부분적으로는 안전을 위해 (사람들이 맹목적으로 스크립트를 실행하는 경우) 스크립트의 API를 깔끔하게 유지해야합니다.

내가 별표 표시 한 것부터 시작하는 것이 가장 좋습니다. 한 번에 하나의 스크립트 만 실행하여 몇 시간 동안 진행하겠습니다. 시스템의 수명이 충분하면 동시에 둘 이상을 실행 해보십시오.

참고 나는이 슈퍼를 직접 테스트하지 않았으므로 버그가 없다고 약속 할 수는 없습니다. 그러나 매우 짧고 간단한 스크립트이므로 수정하기가 쉽고 패치도 매우 환영합니다.

또한 해결하려는 잠금 장치와 관련이없는 잠금을 유발할 수 있습니다. GPU 락 업은 일반적으로 훈련되지 않은 눈과 동일하게 보입니다.

로그

인텔 그래픽을 사용하는 경우 원하는 / 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이 있습니다. 이들은 주로 오픈 소스 -ati를위한 것이지만 도구는 -fglrx와 함께 작동해야합니다. 나는 그것이 -fglrx 버그를 요구하는 것을 본 적이 없지만 확실히 아프지는 않습니다.

테스팅

모든 드라이버의 다음 단계는 일반적으로 최신 또는 이전 버전의 드라이버 테스트를 시작하는 것입니다. 전용 드라이버의 경우 x- 업데이트 ppa를 확인할 수 있지만 공급 업체 웹 사이트에서 드라이버를 다운로드하여 수동으로 설치해야합니다 (시스템 패키징을 엉망으로 만들 수도 있습니다). -intel, -nouveau, -ati와 같은 FOSS 드라이버의 경우 최신 커널 또는 최신 메사 테스트를 의미합니다. http://kernel.ubuntu.com/~kernel-ppa/mainline/ 에서 최신 커널의 패키지 빌드를 제공합니다 . mesa의 경우 xorg-edgers와 같은 다양한 PPA가 있습니다. 또한 정확한 8.0.3 업데이트를 준비하는 중이며 인텔 그래픽에 대한 여러 가지 문제를 해결한다고 생각합니다.

어쨌든 작동하는 버전을 찾으면 멈추지 마십시오. 사용중인 버전과 깨진 버전 사이에 다른 버전을 사용해보십시오. 대괄호를 두 개의 인접한 버전으로 좁힐 수 있다면 회귀의 원인이되는 패치를 격리하는 데 개발자에게 큰 도움이 될 수 있습니다.

기여

문제 해결을 진행하면서 오류를 발견하거나 스크립트 나 문서를 개선 할 수 있습니다. 이들에 대한 기여는 따뜻하게 환영합니다. 위키 문서를 사용하여 계속 진행하십시오! 나는 적어도 일년에 한 번 업데이트하려고하지만 항상 그 주위를 돌아 다니는 것은 아니며 다음 페이지를 방문하는 사람은 개선을 위해 노력한 당신의 노력에 확실히 감사 할 것입니다.

스크립트 자체의 변경에 대해서도 매우 환영합니다. 패치, bzr 또는 git 브랜치 또는 심지어 스크립트 사본과 같이 편안하게 변경 사항을 보내주십시오. 많은 변경을 수행하려는 경우 병합 제안이 포함 된 bzr 분기가 선호되는 방법입니다. 이 작업을 수행하는 방법에 대한 자습서는 code.launchpad.net에서 사용할 수 있으며, 궁금한 점이 있으면 언제든지 IRC로 연락하십시오.

또는 코딩 할 준비가되지 않았지만 오류나 더 많은 기능이 필요한 영역에 플래그를 지정하려는 경우 일반적인 방법으로 버그 보고서를 제출할 수 있습니다 ( ubuntu-bug xdiagnose).

빠른 수정

위의 디버깅 작업에 관심이 없다면 다음과 같은 몇 가지 팁이 있습니다.

독점 드라이버의 경우 시스템에서 완전히 제거하고 제거한 다음 처음부터 다시 설치하십시오. 불행히도 많은 버그를 "해결"합니다 .

FOSS 드라이버에는 여러 가지 커널 스위치를 사용할 수 있습니다. 3D / 메사 버그의 경우 다양한 설정을 조정하는 데 많은 차이가 있습니다.

드디어

마지막으로, 한 번의 요청으로 ... 위에서 설명한 것과 같은 약간의 욕설을 완료 할 때까지 "랜덤 멈춤"에 대한 버그 보고서를 Launchpad에 제출하지 마십시오. 그렇지 않으면, 당신은 단지 소음에 추가하고있을 것입니다.

우리는 잘 연구 된 버그 보고서를 찾아 내려고 노력합니다. 우리는 이것들이 벅에 더 높은 강타를 제공하고 배포판에 대한 실제 수정으로 끝날 가능성이 훨씬 큽니다.


답변 주셔서 감사합니다. 링크 된 문제 해결 freeze wiki 의 저자 입니까? xdiagnose / workloads 스크립트가 언급되어있는 것 같습니다-편집 할 것이지만 당신뿐만 아니라 내가 할 것이라고 확신하지는 않습니다. 또한 여기에서 radeontool 사용에 대해서는 언급하지 않지만 Wiki에는 언급되어 있습니다. 내 경우에도 여전히 radeontool을 사용해야합니까?
Abe

또한 xdiagnose / workloads의 모든 스크립트를 실행 한 스크립트가 별표로 작성된 스크립트부터 순차적으로 실행되는 스크립트가 유용할까요? 마지막으로 변경 사항을 제출하는 방법을 어디에서 배울 수 있습니까?
Abe

내가 찾은 첫 번째 버그는 다음과 같습니다. do_chws_loop 및 do_glx_loop에는 wmctrl이 필요하고 do_glx_loop에는 glxgears가 필요하지만 스크립트에는 "필요한 것을 테스트하고 설치하는 기능이 포함되어 있습니다." README에 설명 된대로. 이러한 기능을 추가 할 수는 있지만 먼저 버그를 제출 한 다음 수정해야합니까? 그리고 만약에 ... 5 라인이 필요하다면 괜찮습니까? 아니면 '선호하는 방법'이 있습니까? 그리고 이것이 스크립트가 루트로 실행되어야한다는 것을 의미합니까? ... "실행"인수가 필요한 이유는 무엇입니까? 모든 질문에 대해 죄송합니다. 가능하면 도움을 드리고 싶습니다.
Abe

물론이지, 그 점을 다루기 위해 대답을 업데이트 할 것입니다.
브라이스

세 번째 질문과 관련하여. 예, 스크립트가 필요한 것을 테스트하도록하는 것은 TODO 목록에 있습니다. if ... else 블록은 확실히 좋은 출발점입니다. 궁극적으로 사용자가 GUI에서 스크립트를 실행할 수 있도록하고 싶기 때문에 사용자가 요구 사항을 GUI에 다시 전달하여 사용자에게 요구 사항이없는 경우 회색으로 표시 할 수 있기를 원합니다. 그러나 나는 그것을 할 수있는 먼 길이므로 명령 줄에 대한 간단한 검사 만 시작하는 것이 좋습니다.
브라이스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.