Linux 7.3, VRAM 부족 상황에서 성능 개선

2 hours ago 1

Linux 7.3에 포함될 VRAM 관리 패치는 물리 VRAM을 초과한 게임 메모리를 시스템 RAM으로 내보낼 때 발생하는 충돌과 극심한 성능 저하를 줄이는 기반을 마련함 VRAM 초과 할당은 가능하지만 시스템 RAM 접근은 PCIe를 거치므로, PCIe 4.0 x16 환경에서 프레임당 1GiB 넘게 읽으면 이론적으로 30 FPS를 유지할 수 없음 실제 병목에는 교착 상태 처리 누락, 프로세스 간 반복적인 메모리 이동, 디스플레이용 연속 물리 메모리 확보가 얽혀 있으며, 32MiB scanout 이미지 공간을 만들려고 최대 4GiB를 내보내는 사례도 관찰됨 단계적 회수 제한과 메모리 우선순위를 반영한 LRU 정렬을 적용하자, 8GiB GPU에서 9GiB를 요청한 Indiana Jones: The Great Circle이 평균 19.6ms/frame으로 실행됨 관련 기능은 SteamOS Stable과 Preview에 배포됐지만 전체 변경은 아직 업스트림 작업 중이며, 공개된 시험용 Linux·Mesa 브랜치는 SteamOS만큼 검증되지 않아 오류와 불안정성이 있을 수 있음 VRAM 초과 할당과 PCIe의 물리적 한계 GPU 드라이버는 오래전부터 물리 VRAM보다 많은 메모리를 요청하는 VRAM 초과 할당을 지원해 왔음 커널 드라이버는 실제 GPU 메모리에 들어갈 만큼 배치하고 나머지를 시스템 RAM에 둘 수 있음 이론상 VRAM 부족은 안정성 문제가 아니라 성능 문제여야 함 시스템 RAM은 전용 GPU의 VRAM보다 느리고, GPU가 접근할 때 모든 데이터가 PCI 버스를 통과해야 함 PCI 버스는 지연 시간을 추가하며 대개 시스템 메모리 접근 대역폭을 제한함 PCIe 4.0 x16은 32GiB/s보다 약간 낮은 대역폭을 제공해 1ms마다 약 32.2MiB를 전송할 수 있음 30 FPS의 프레임 시간인 33.3ms 동안 전송 가능한 절대 상한은 약 1,075.5MiB임 한 프레임에서 내보낸 메모리로부터 1GiB 넘게 가져와야 한다면 30 FPS 달성이 불가능함 메모리 위치보다 캐시와 접근 패턴이 중요함 드라이버는 VRAM이 충분할 때도 명령 버퍼와 관련 할당을 시스템 RAM에 둘 수 있으며, GPU가 CPU 메모리에 접근해도 정상적인 성능을 내는 경우가 있음 명령 버퍼가 매우 작다는 점뿐 아니라 캐시와 접근 패턴도 영향을 줌 RDNA3 마이크로벤치마크에서는 버퍼가 L2 또는 상위 캐시에 들어갈 때 CPU RAM과...

Read Entire Article