你内存太小了。您需要为DXVK预留一些空间

你内存太小了。您需要为DXVK预留一些空间

运行任何游戏时,内存消耗太大,通过 Wine (WineHQ),它可能会在有时间交换任何内容之前完全填满 RAM 内存,从而导致此错误:
“DxvkMemoryAllocator:内存分配失败”

有什么办法可以防止这种情况发生吗?

我读到(需要找到有关它的链接)它无法在 dxvk 中修复...

答案1

对于任何遇到此消息的人来说,实际上有两种可能性:

你内存太小了。您需要为DXVK预留一些空间

如果您发现系统内存在崩溃时已被使用的 + 缓冲区 + 缓存填满,通常会发生这种情况。

运行以下命令以确保 DXVK 始终有 1GB 可用空间:

echo $(( 1024 * 1024 )) | sudo tee /proc/sys/vm/min_free_kbytes

应用程序是32位的,wine默认只分配2GB空间

当您发现电脑有可用内存,但应用程序仍然崩溃时,通常会发生这种情况。

您需要编辑启动选项以添加WINE_LARGE_ADDRESS_AWARE=1PROTON_LARGE_ADDRESS_AWARE=1允许 wine 分配 2GB - 4GB 空间。

答案2

好吧,我解决这个问题的方法是运行这个:
stress-ng --vm-bytes 5000M --timeout 15 --vm-keep --vm 1 --verbose 因为我只有 6GB 的 RAM。

但在此之前,最好对 Wine 游戏以及任何其他占用内存的应用程序(如 Chromium)发出 SIGSTOP 信号。

该命令将强制 RAM 上的许多内容移动到交换区,这样就不会发生 dxvk 错误。

在此之前,wine 已经填满了几乎 99% 的 RAM(如果不是 100%)……

每次 RAM 使用率过高时都必须重复此操作,因此最好编写脚本:)

相关内容