1P by neo 11일전 | ★ favorite | 댓글 1개
  • 문제 발생: Windows와 Linux를 듀얼 부팅하는 데스크탑에서, Linux에서 고용량 RAM 사용 시 절전 모드로 전환하면 시스템이 충돌하는 문제가 발생함. 시스템을 깨우면 검은 화면이 나타나거나 응답이 없는 상태가 됨. 이 문제는 amdgpu 드라이버의 전원/메모리 관리 버그로 인한 것임.

  • 문제 진단: Gigabyte B550M DS3H 메인보드와 AMD RX 570 GPU를 사용하는 시스템에서 Arch Linux를 실행 중. 시스템 충돌 후 journalctl을 통해 로그를 확인했으며, amdgpu_device_suspend에서 메모리 부족(OOM) 오류가 발생함을 발견함. NVMe 드라이버가 시스템 재개 시 초기화에 실패하여 시스템이 멈추고 로그가 기록되지 않음.

  • 해결 시도: 여러 절전 모드를 시도하는 systemd 설정을 변경하고, 비동기 절전을 비활성화하여 문제를 단순화하려 했으나 근본적인 문제는 해결되지 않음. amdgpu의 TTM 버퍼 제거 과정에서 충돌이 발생함을 확인함.

  • 문제 원인: 시스템이 S3 절전 모드에 들어가면 PCIe GPU의 전원이 차단되어 VRAM 데이터가 손실됨. 이를 방지하기 위해 GPU 드라이버는 VRAM을 시스템 RAM으로 백업해야 하나, Linux amdgpu 드라이버는 충분한 RAM이 없을 경우 메모리 부족으로 시스템이 충돌함.

  • 해결책: Mario Limonciello가 VRAM을 디스크 기반 저장소가 중지되기 전에 백업하도록 커널 패치를 작성함. 이 패치는 VRAM 백업을 dpm_suspend() 대신 dpm_prepare() 단계에서 수행하도록 변경하여, 메모리 부족 시 절전을 중단할 수 있도록 함.

  • 추가 문제 해결: 사용자가 VRAM을 사용자 공간에서 백업하도록 하는 스크립트를 작성하여, 시스템 절전 전 VRAM을 시스템 RAM으로 이동시킴. 그러나 여러 3D 앱이 실행 중일 때는 VRAM이 계속 GPU로 이동하여 충돌이 발생할 수 있음.

  • 최종 해결: 전원 관리 알림 API를 사용하여 PM_SUSPEND_PREPARE 단계에서 VRAM을 백업하도록 변경함. 이로 인해 스왑이 비활성화되기 전에 VRAM을 시스템 RAM으로 이동할 수 있게 되어 문제를 해결함.

  • 결론: 이 문제는 여러 사람의 노력과 다양한 시도를 통해 해결되었으며, Linux 커널 6.14에 포함될 예정임.

Hacker News 의견
  • 데스크탑이 S3 슬립 모드에 들어가면 시스템이 PCIe GPU의 전원을 차단한다는 가정에 대해 의문이 있음

    • S3는 RAM을 제외한 모든 것의 전원을 차단해야 하지만, Gigabyte Aorus 메인보드는 NVMe SSD 슬립 버그로 인해 제대로 슬립하거나 깨어나지 못하는 문제가 있음
    • 이를 해결하기 위해 udev 규칙을 추가해야 함
    • 특정 PCIe 포트에서의 깨어남을 방지하는 방법도 있음
    • 문제 있는 PCIe 깨어남 장치를 찾는 방법이 있음
    • udevadm 명령어를 사용하여 장치 정보를 얻을 수 있음
    • 쉘 스크립트를 사용하여 문제를 해결할 수도 있음
  • memreserver의 저자가 Linux 슬립 문제를 해결하기 위해 디버깅을 했던 경험을 공유함

    • Linux가 디스크와 메모리 서브시스템이 얼기 전에 신뢰할 수 있는 중단 후크를 실행하지 못했던 문제를 지적함
    • Freedesktop Gitlab에서 관련 정보를 찾기 어려움
  • Linux에서 슬립 기능을 구현하는 것이 어려운 이유와 디버깅의 어려움을 설명함

    • ThinkPad P1G4에서 팬이 자동으로 꺼지지 않는 문제를 겪고 있음
    • 블루투스 헤드폰에서 슬립 후 소리가 깨지는 문제를 경험함
  • Ryzen 기반 ThinkPad를 사용하는 사용자가 Linux에서 슬립 문제를 겪고 있으며, 6.14 버전을 기대하고 있음

  • "슬립/웨이크" 문제가 NP-완전 문제임을 깨달았다는 의견을 공유함

  • Framework AMD 노트북에서 GPU 확장과 듀얼 부팅 Linux/Windows를 사용하는 사용자에게 도움이 될 것이라는 의견을 제시함

    • 기부를 하고 싶다는 의사를 밝힘
  • AMD GPU에서 슬립 후 PC가 거의 멈추는 문제를 겪고 있는 사용자가 문제 해결을 위해 노력 중임

    • RX 5700 XT에서 RX 7900 XTX로 교체한 후 문제가 발생함
    • 6.14 버전이 문제를 해결할 수 있기를 기대함
  • Linux를 사용하는 동안 항상 슬립 문제를 겪어왔다는 의견을 공유함

    • Intel, AMD, ATI, NVIDIA 하드웨어를 사용해도 슬립이나 하이버네이션이 제대로 작동하지 않는 경우가 많음
  • IoT 하드웨어에서 슬립 문제를 디버깅했던 경험을 공유함

    • Linux에서 시스템 하이버네이션이 슬립보다 더 신뢰할 수 있음
    • SSD가 빠르다면 시스템 하이버네이션을 사용하는 것이 좋음
  • 메모리 관리와 OOM 조건이 Linux에서 여전히 어려운 문제임을 설명함

    • OOM 문제를 해결하기 위해 RAM을 추가하는 것이 비효율적임
    • systemd의 디버그 셸 기능이 유용하다는 의견을 공유함
    • Linux 커널 서브시스템에 대한 유용한 강연이 온라인에서 제공됨