VRAM이 더 많았으면 모든 문제가 사라졌을 텐데. 하지만 사실은 그렇지 않다.

오늘 리눅스 패치 시리즈에서 AMD 엔지니어 Sameul Zhang은 시스템 내 과도한 VRAM 용량과 다수의 AMD Instinct 가속기 탑재로 인해 리눅스 서버가 최대 절전 모드(hibernating) 진입에 실패하는 특이한 문제점을 지적했습니다. 참고로, Instinct 가속기는 AI, 고성능 컴퓨팅, 과학 워크로드 및 기타 까다로운 작업을 위해 특별히 설계된 강력한 AMD GPU입니다.
이러한 GPU들이 강력한 성능을 자랑하는 이유 중 하나는 일부 모델에서 192GB에 달하는 대용량 VRAM을 탑재한다는 점입니다. 이는 게이머들에게는 엄청난 수치로 들릴지 몰라도, 현대 데이터 센터 칩에서는 비교적 표준적인 수준입니다. 실제로, 이 AMD AI 리눅스 서버는 총 여덟 개의 Instinct 카드를 장착하여 전체 VRAM 용량을 약 1.5TB로 확장했습니다. 물론 VRAM 용량이 많다는 것은 일반적으로 이점을 제공하지만, 특정 상황에서는 예기치 않은 문제로 이어지기도 합니다.
하지만 최대 절전 모드 실패의 근본적인 원인이 VRAM 용량 자체에 있는 것은 아닙니다. 핵심은 리눅스가 최대 절전 모드 과정에서 GPU 메모리를 처리하는 방식에 있습니다. 시스템이 절전 모드를 시작하면, 모든 GPU 메모리 내용이 먼저 시스템 RAM으로 오프로드되며, 이는 주로 Graphics Translation Table(GTT) 또는 공유 메모리(shmem)를 통해 이루어집니다. 이후 커널은 시스템 메모리 전체 콘텐츠(비워진 VRAM 포함)를 복사하여 별도의 메모리 영역에 복제한 후 디스크에 기록함으로써 최대 절전 모드 이미지를 생성합니다.
이 과정이 복잡하게 들릴 수 있습니다. 간단히 설명하자면, 서버의 총 VRAM이 1.5TB인 경우, 이 데이터 복제 과정 자체가 메모리 사용량을 최대 3TB까지 끌어올릴 수 있습니다. 이는 시스템 메모리 용량이 2TB에 불과한 서버의 한계를 쉽게 초과하게 하며, 결국 이 메모리 초과분이 최대 절전 모드 프로세스 실패를 초래하는 것입니다.
다행히 Zhang은 이 최대 절전 모드 문제를 해결하기 위해 노력해 왔으며, 주요 수정 사항을 제안했습니다. 첫 번째 변경은 절전 모드에 필요한 시스템 메모리 양을 줄여 프로세스가 성공적으로 작동하도록 하는 것입니다. 그러나 이 과정에서 새로운 문제가 발생했는데, 바로 '해동(thawing)' 단계(시스템이 절전 모드에서 재개되는 시점)가 방대한 메모리 때문에 거의 한 시간에 달할 수 있다는 점이었습니다. 이를 해결하기 위해 세 번째 패치가 추가되어, 해동 단계에서 특정 버퍼 객체 복원을 생략하도록 처리되었고, 이로써 재개 시간이 크게 단축되었습니다.
현재 고성능 AI 서버들은 대부분 연속적으로 작동하기 때문에, 많은 이들이 절전 모드를 사용하는 이유에 대해 의문을 가질 수 있습니다. 하지만 일반적인 이유 중 하나는 비활성화 기간 동안 전력 소비를 줄이고 전력망 안정화에 기여하기 위함입니다. 대규모 데이터 센터는 막대한 전력을 소비하기 때문에, 이는 최근 스페인에서 목격된 것과 같은 정전 위험을 낮추는 데 중요한 역할을 할 수 있습니다.