AArch64 데스크톱 실험의 끝

3 days ago 8
  • 약 11개월간 Ampere Altra 기반 AArch64 데스크톱을 실사용했지만, 서버용 플랫폼을 데스크톱처럼 쓰면서 커널·GPU·앱 호환성 부담이 계속 누적됨
  • 시스템은 Ampere Altra Q80-30 80코어 3.0GHz, 128GB RAM, AMD Radeon RX6700XT, ASRock Rack ALTRAD8UD-1L2T, Fedora 42–44 조합이었고, 애초에 데스크톱용 하드웨어가 아니었음
  • AMD GPU 사용에는 erratum 82288 / PCIE_65 우회 패치가 필요해 Fedora 커널 업데이트 때마다 자체 커널을 주로 매주 다시 빌드해야 했음
  • Linux 7.0 전후로 AMD GPU 오류와 영상 프레임 드롭이 생겼고, Nvidia RTX 2060 전환 후에도 AArch64 Flatpak 저장소의 org.freedesktop.Platform.GL.nvidia 부재로 FreeCAD와 OrcaSlicer가 크래시됨
  • 결국 x86-64 Ryzen 5 3600 시스템으로 돌아갔으며, Ampere Altra는 데스크톱 대신 RISC-V 패키지 빌드용으로 남기고 새 AArch64 데스크톱에는 다른 하드웨어 플랫폼이 필요하다고 판단함

서버용 Altra를 데스크톱으로 쓴 구성

  • 약 11개월 동안 AArch64 데스크톱을 실사용한 뒤 실험을 종료
  • 최종 하드웨어 구성은 다음과 같음
    • CPU: Ampere Altra Q80-30, 80코어 3.0GHz
    • RAM: 128GB, 8×16GB HMA82GR7CJR8N-XN
    • GPU: AMD Radeon RX6700XT
    • NVMe: Lexar LM970 2TB, ADATA SX8200 Pro 1TB
    • 메인보드: ASRock Rack ALTRAD8UD-1L2T
    • PSU: MSI MPG A850G 850W
    • 케이스: Endorfy 700 Air
    • USB3: PCIe x4 no-name USB 3.2/10Gbps 컨트롤러
  • 이 보드는 서버 메인보드이고, Altra 시스템 자체도 데스크톱용으로 설계된 제품이 아님
  • Ampere Altra 시스템의 QVL에는 AMD Radeon GPU 카드가 포함되지 않으며, 동작시킬 수는 있지만 추가 작업이 필요한 경우가 많음
  • 별도 USB 3.2 컨트롤러는 메인보드 기본 지원보다 더 많은 USB 장치와 외장 NVMe용 10Gbps 포트를 제공함
  • 전체 시스템은 Fedora 42–44에서 동작했지만, 실제 사용에는 기본 Fedora 커널이 아니라 자체 빌드 커널이 필요했음

PCIE_65가 만든 커널 유지보수 부담

  • Ampere Altra의 PCI Express 컨트롤러에는 erratum 82288 / PCIE_65 문제가 있음
  • PCIE_65는 PCIe MMIO 쓰기에서 잘못된 주소를 만들 수 있으며, 특히 AMD GPU 같은 특정 장치 유형에 영향을 줌
  • Linux 커널 드라이버가 ioremap_wc처럼 MMIO 공간을 Normal, non-cacheable 메모리 속성으로 매핑할 때 문제가 생길 수 있음
    • write combining 또는 비정렬 접근을 가능하게 하려는 목적일 수 있음
    • 이 경우 PCIe 인터페이스의 outbound MMIO write에서 데이터 손상이 발생할 수 있음
    • 우회책은 ioremap_wc 대신 ioremap처럼 Device, non-gathering 메모리로 매핑하고, PCIe MMIO 공간의 모든 메모리 연산을 엄격히 정렬하는 방식임
  • 정상적인 Linux 시스템으로 쓰려면 Fedora 커널 패키지 업데이트마다 커널을 다시 빌드해야 했고, 보통 매주 작업이 필요했음
  • 로컬 Fedora 커널 패키지 저장소를 업데이트한 뒤 7.0.2-200.fc44.pcie65.6 같은 자체 버전 규칙으로 빌드함
    • pcie65는 적용한 패치를 나타냄
    • 마지막 숫자는 패치 리베이스 카운터였음
  • GitHub 저장소에서 패치를 가져와 리베이스하고 필요할 때 수정했으며, 그 결과 공식 Fedora보다 더 최신 커널을 쓰는 경우도 있었음

80코어가 데스크톱 체감 성능을 보장하지는 않음

  • 80개의 CPU 코어가 있어도 좋은 데스크톱 머신이 되는 것은 아니었음
  • 많은 코어 수는 데스크톱에서 필요한 빠른 체감 성능을 보장하지 않았음

GPU 교체 뒤에도 남은 앱 호환성 문제

  • AMD Radeon RX6700XT는 out-of-tree PCIE_65 패치를 적용한 커널에서 동작했고, 게임 실행과 하드웨어 보조 영상 디코딩도 가능했음
  • Linux 7.0 릴리스 전후 어느 시점부터 AMD GPU가 실패하기 시작함
    • 게임 실행 시 amdgpu 0000:03:00.0: Fence fallback timer expired on ring vcn_dec_0 로그가 반복됨
    • YouTube 영상 시청에서는 750프레임 중 720프레임이 드롭되어 사실상 사용할 수 없었음
  • 일반적인 상황이라면 커널을 bisect해 문제 지점을 찾겠지만, PCIE_65 패치 때문에 커널이 tainted 상태라 실제 원인을 판단하기 어려웠음
  • AMD Radeon 대신 Nvidia RTX 2060을 장착함
    • nouveau 커널 드라이버를 쓰려면 여전히 PCIE_65 패치가 필요했음
    • 기본 Fedora 커널과 Nvidia 바이너리 드라이버 조합은 정상 동작함
    • 영상 디코딩 가속과 Wine 기반 일부 게임도 동작함
  • FreeCAD와 OrcaSlicer는 실행 직후 크래시됨
    • 원인은 AArch64 Flatpak 저장소에 org.freedesktop.Platform.GL.nvidia가 없는 것이었음
    • 두 도구는 자주 쓰는 앱이라 데스크톱 전환을 어렵게 만든 핵심 문제였음

x86-64 복귀와 Altra의 새 역할

  • 결국 꺼두었던 x86-64 시스템을 다시 부팅함
  • 케이블을 많이 옮기고 새 케이블도 배치한 뒤, 책상 아래에서 두 시스템을 함께 사용하게 됨
    • wooster: Ampere Altra 시스템
    • puchatek: Ryzen 5 3600 시스템
  • 80코어에서 6코어 12스레드로 이동하는 경험은 낯설었지만, 실제 작업은 정상적으로 돌아감
    • 모든 스레드를 사용해도 음악 재생이 계속됨
    • Steam 라이브러리의 모든 게임을 플레이할 수 있음
    • FreeCAD로 홈 프로젝트 케이스 설계를 마칠 수 있음
    • OrcaSlicer에서 바로 3D 프린트용 프로토타입을 만들 수 있음
  • Ampere Altra 시스템은 계속 켜둔 채 RISC-V 패키지 빌드를 처리함
  • 이 시스템은 단일 스레드 성능은 약하지만, 멀티코어 부하에서는 빠르게 동작함

같은 방식의 AArch64 데스크톱은 반복하지 않음

  • Ampere Altra로 같은 데스크톱 실험을 반복할 계획은 없음
  • 또 다른 AArch64 데스크톱을 시도하려면 완전히 새로운 하드웨어 플랫폼이 필요함
  • Nvidia DGX Spark 시스템을 사기 위해 20,000 PLN 이상을 지출할 계획은 없음
Read Entire Article