너무 많은 메모리를 소비하는 게임을 Wine(WineHQ)을 통해 실행할 때 무언가를 교체하기 전에 RAM 메모리가 완전히 채워져 다음 오류가 발생할 수 있습니다.
"DxvkMemoryAllocator: 메모리 할당 실패"
이런 일이 발생하지 않도록 하는 방법이 있나요?
dxvk에서 수정할 수 없다는 내용을 읽었습니다(관련 링크를 찾아야 함)...
답변1
이 메시지를 접한 사람에게는 실제로 두 가지 가능성이 있습니다.
당신의 기억력은 너무 작습니다. DXVK를 위한 공간을 확보해야 합니다.
이는 일반적으로 충돌 발생 시 시스템 메모리가 사용된 + 버퍼 + 캐시로 가득 차 있는 경우에 발생합니다.
다음 명령을 실행하여 DXVK에 항상 1GB의 여유 공간이 있는지 확인하십시오.
echo $(( 1024 * 1024 )) | sudo tee /proc/sys/vm/min_free_kbytes
애플리케이션은 32비트이며 wine은 기본적으로 2GB의 공간만 할당합니다.
이는 일반적으로 컴퓨터에 여유 메모리가 있지만 응용 프로그램이 여전히 충돌하는 경우에 발생합니다.
와인이 2GB - 4GB 공간을 할당하도록 추가 WINE_LARGE_ADDRESS_AWARE=1
하거나 허용하려면 시작 옵션을 편집해야 합니다 .PROTON_LARGE_ADDRESS_AWARE=1
답변2
제가 이 문제를 해결한 방법은 다음을 실행하는 것이었습니다.
stress-ng --vm-bytes 5000M --timeout 15 --vm-keep --vm 1 --verbose
RAM이 6GB밖에 없기 때문입니다.
하지만 그 전에 Wine 게임이나 Chromium과 같이 메모리를 많이 차지하는 다른 애플리케이션에 SIGSTOP 신호를 보내는 것이 좋습니다.
이 명령은 dxvk 오류가 발생하지 않도록 RAM의 대부분을 스왑으로 이동하도록 합니다.
그 전에는 와인이 RAM의 100%는 아니더라도 거의 99%를 채웠습니다.
RAM 사용량이 너무 높아질 때마다 이 작업을 반복해야 하므로 스크립트를 작성하는 것이 좋습니다. :)