그래픽 카드가 가끔 충돌합니다. 짜증나지만 저는 이를 감수하고 있습니다. 일반적으로 그래픽을 재부팅하거나 sudo systemctl restart lightdm.service
필요한 경우 전체 시스템을 재부팅합니다.
이 특별한 경우에는 systemctl
통화가 중단되고 나는다시 시작하고 싶지 않음기계에서 오랫동안 실행되는 작업이 있기 때문입니다.
충돌은 다음 dmesg
과 같이 기록됩니다.
[944520.212254] Call Trace:
[944520.212256] [<ffffffff818384d5>] schedule+0x35/0x80
[944520.212257] [<ffffffff8183b625>] schedule_timeout+0x1b5/0x270
[944520.212280] [<ffffffffc0235244>] ? dce_v6_0_program_watermarks+0x514/0x720 [amdgpu]
[944520.212282] [<ffffffffc0196d2c>] kcl_fence_default_wait+0x1cc/0x260 [amdkcl]
[944520.212287] [<ffffffff815b4f50>] ? fence_free+0x20/0x20
amdgpu
모듈이 충돌한 것 같습니다 . 다시 시작하고 싶어서 시도해봤는데
sudo modprobe -r amdgpu
modprobe: FATAL: Module amdgpu is in use.
누가 사용하고 있는지 알아내려고 amdgpu
하면
lsmod | grep amdgpu
amdgpu 2129920 7
amdttm 102400 1 amdgpu
amdkcl 32768 1 amdgpu
i2c_algo_bit 16384 1 amdgpu
drm_kms_helper 155648 1 amdgpu
drm 364544 10 drm_kms_helper,amdgpu,amdkcl,amdttm
이 모듈을 사용하는 기본적으로 7가지 "사물"이 있는데 어떻게 찾아서 모듈을 제거하는지 모르겠습니다 amdgpu
.
질문: 시스템을 다시 시작하지 않고 모듈을 다시 로드할 수 있는 합리적인 방법이 있습니까? 아니면 내 동영상을 다시 가져올 수 있는 더 좋은 방법이 있나요?
답변1
@Chris Stryczynski가 말했듯 sudo cat /sys/kernel/debug/dri/N/amdgpu_gpu_recover
이 이것이 amdgpu 커널 모듈을 다시 로드하는 올바른 방법이거나 amdgpu.gpu_recovery=1
커널 매개변수로 시스템을 부팅하여 충돌 시 자동으로 재설정할 수 있습니다.
그러나 디스플레이 서버(Xorg 또는 Wayland)는 그래픽 스택을 다시 초기화해야 하는데 데스크탑 환경에서는 이를 수행할 수 없기 때문에 이러한 옵션은 덜 유용합니다. (아직 구현되지 않았습니다.)
gpu_recovery 커널 매개변수를 사용하면 작업을 저장한 다음 표시되지 않더라도 재부팅할 수 있습니다.
답변2
https://github.com/RadeonOpenCompute/ROCK-Kernel-Driver/issues/11#issuecomment-450696825
이러한 재설정이 자동으로 시도되는 것을 원하지 않거나 잠금이 감지되지 않으면 gpu_recovery 매개변수를 설정하지 않은 경우에도 debugfs 메커니즘을 사용하여 수동 GPU 재설정을 수행할 수 있어야 합니다. 이렇게 하려면 (루트로) /sys/kernel/debug/dri/N/amdgpu_gpu_recover를 읽으십시오. 이 예에서 N은 DRI 하위 시스템에서 재설정하려는 GPU의 번호입니다.
이것은 나에게 효과가 없었습니다...하지만 어쨌든 게시해야겠다고 생각했습니다.