안녕 므,
설명하신 증상들은 Windows 디스플레이 드라이버 모델의 NVIDIA 드라이버 프레젠테이션 계층에서 발생하는 버그를 식별할 수 있습니다. Unity 애플리케이션이 초당 30프레임을 목표로 하고 시스템이 정확히 30개의 핸들을 새기기 때문에, 드라이버가 각 프레임을 그린 후 렌더링 자원을 해제하지 못하고 있습니다. 이는 윈도우 렌더링 루프를 최소화하고, L40을 Tesla Compute Cluster 모드로 전환하여 디스플레이 출력을 완전히 비활성화하고 카드를 원시 수학 프로세서로 처리함으로써 확인할 수 있습니다. 이 문제는 TCC 모드에서는 사라지고 로컬 RTX 3060에서는 발생하지 않으므로, 이는 Windows Server 2022의 최근 L40 드라이버 브랜치에 국한된 미해결 공급업체 결함입니다.
NVIDIA 지원 티켓에 이 메모리 누수를 제대로 문서화하려면 공식 Microsoft Sysinternals Process Explorer를 사용해야 합니다. Sysinternals 스위트에서 procexp.exe을 실행하고 Unity 실행 파일의 하단 창 핸들 뷰를 활성화하면, 시스템이 이 고아 자원을 실시간으로 할당하는 모습을 볼 수 있습니다. 핸들은 본질적으로 운영 체제가 메모리 블록이나 동기화 스레드와 같은 활성 자원을 추적하기 위해 사용하는 클레임 티켓입니다. Windows와 GPU 간의 핵심 통신 규칙과 타임아웃 값은 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers의 레지스트리 키에 의해 관리되지만, 이 특정 누수는 NVIDIA 드라이버의 내부 실행 경로 내에서 발생하며, Windows 커널에 리소스 클로저를 제대로 보고하기 전에 발생합니다.
영구적인 코드 수준의 수정은 NVIDIA의 공식 드라이버 업데이트가 필요하므로, 가장 즉각적인 완화책은 깨진 코드 경로를 우회하는 것입니다. Unity 프로젝트 설정을 DirectX 12나 Vulkan으로 변경하면 작업량이 완전히 다른 렌더링 파이프라인으로 이동되어, 보통 DX11 특유의 버그를 피할 수 있습니다. 프로젝트 아키텍처가 DirectX 11을 엄격히 요구한다면, 표준 메모리 관리를 복원하기 위해 53x 또는 55x 시리즈의 오래된 안정적인 NVIDIA 엔터프라이즈 드라이버 브랜치를 깨끗이 설치해야 합니다.
이 답변이 유용한 정보를 제공했길 바랍니다. 만약 그랬다면, "답변 수락"을 눌러주세요. 궁금한 점이 있으면 언제든지 댓글로 남겨주세요.
VPHAN