리눅스 7.3에 적용될 새로운 VRAM(비디오 램) 관리 패치가 그래픽카드 메모리 부족으로 인한 게임 성능 저하와 충돌 문제를 크게 개선할 전망입니다. 이 패치는 물리 VRAM 용량을 초과하는 게임 데이터를 시스템 RAM으로 옮길 때 발생하는 여러 병목 현상을 해결하는 데 중점을 둡니다. 특히, 교착 상태 처리 누락, 프로세스 간 반복적인 메모리 이동, 그리고 디스플레이 출력을 위한 연속적인 물리 메모리 확보의 어려움 등이 주요 개선 대상입니다.
GPU 드라이버는 오래전부터 물리 VRAM보다 많은 메모리를 요청하는 'VRAM 초과 할당(over-allocation)'을 지원해왔습니다. 이론적으로 VRAM 부족은 안정성 문제가 아닌 성능 문제로 이어져야 하지만, 실제로는 시스템 RAM 접근 시 PCIe 버스를 거치면서 발생하는 지연 시간과 대역폭 제한이 큰 병목이었습니다. 예를 들어, PCIe 4.0 x16 환경에서 프레임당 1GiB 이상을 읽어야 한다면 30 FPS(초당 프레임 수)를 유지하기 어렵습니다. 기존 시스템에서는 32MiB의 디스플레이 출력(scanout) 이미지 공간을 확보하기 위해 최대 4GiB의 VRAM을 비워야 하는 비효율적인 상황도 발생했습니다. 이는 메모리 단편화와 기존 LRU(가장 오랫동안 사용되지 않은) 기반 회수 방식이 물리적 연속성을 고려하지 않았기 때문입니다.
이번 패치는 이러한 문제를 해결하기 위해 여러 기술적 개선을 도입했습니다. 첫째, 커널 잠금(lock)으로 인한 ABBA 교착 상태(deadlock)를 방지하기 위해 `drm_exec` 도우미를 TTM(공용 GPU 메모리 관리 계층)에 적용하는 패치 세트를 수정하고 있습니다. 둘째, 게임과 `gamescope` 같은 애플리케이션이 같은 버퍼 객체를 VRAM과 시스템 RAM 사이에서 반복적으로 주고받는 '핑퐁 현상'을 막기 위해 3단계 회수 제한 휴리스틱을 적용합니다. 이는 애플리케이션 메모리가 내보내지는 것을 감지하면 일정 시간 동안 강제 회수를 억제하여 불필요한 메모리 이동을 줄입니다. 셋째, 애플리케이션이 `vkSetDeviceMemoryPriorityEXT` 같은 Vulkan 확장 기능을 통해 메모리 우선순위 힌트를 전달하면, 커널이 이를 반영하여 중요한 데이터를 VRAM에 더 오래 유지하도록 LRU 정렬을 개선합니다.
이러한 개선 덕분에 8GiB VRAM GPU에서 9GiB를 요청하는 '인디아나 존스: 더 그레이트 서클(Indiana Jones: The Great Circle)' 게임이 평균 19.6ms/frame(약 51 FPS)으로 실행되는 등 상당한 성능 향상을 보였습니다. 이는 VRAM 부족 상황에서도 게임이 충돌하지 않고 충분히 플레이 가능한 수준으로 작동함을 의미합니다. 물론, 10GiB를 요청하여 2GiB를 초과 할당했을 때는 평균 프레임 시간이 29.8ms(약 33 FPS)로 증가하고 스파이크가 빈번하게 발생하여 플레이 중 변동성을 느낄 수 있었지만, 이전과 비교하면 훨씬 안정적인 경험을 제공합니다.
이번 리눅스 7.3의 VRAM 관리 개선은 리눅스 기반 게이밍, 특히 스팀 덱(Steam Deck)과 같은 휴대용 게임기 사용자들에게 매우 긍정적인 영향을 미칠 것입니다. VRAM 용량이 제한적인 환경에서도 더 많은 게임을 원활하게 즐길 수 있게 되어, 리눅스 게이밍 생태계의 확장에 기여할 것으로 보입니다. 또한, 개발자들에게는 VRAM 최적화 부담을 일부 덜어주면서도, `VK_EXT_pageable_device_local_memory`와 같은 우선순위 힌트 기능을 활용하여 더욱 세밀한 성능 제어를 가능하게 할 것입니다. 이는 리눅스 플랫폼의 경쟁력을 높이고, 더 많은 게임 스튜디오가 리눅스 지원을 고려하게 만드는 중요한 전환점이 될 수 있습니다.