“致命错误:无法分配足够的内存”但有大量未使用的交换区

“致命错误:无法分配足够的内存”但有大量未使用的交换区

我正在尝试跑步螃蟹(特别是“成对全局对齐”小节,它调用虚拟搜索)在 128GB RAM 工作站上,操作系统=Ubuntu 23.04,内核=6.2.0-39generic。

我在运行分析时没有问题,同时减少了用作参考的序列的最大长度,但我想使用完整的参考数据库。

当我使用完整数据集启动脚本时,分析大约 30% 时失败,并显示以下消息:

Fatal error: Unable to allocate enough memory

然而该系统有:

  • 128GB内存

  • 776 GB 交换空间

交换区组织在一个分区 + 2 个交换文件中(全部位于 NVME SSD 上)。

NAME           TYPE      SIZE   USED PRIO
/swap.img      file        8G 339,4M   -2
/dev/nvme0n1p3 partition 256G     1G   -3
/home/swapfile file      512G     0B   -4

Swappiness 设置为 60:

cat /proc/sys/vm/swappiness
60

并且系统在需要时正确交换。

在分析进行到大约 30% 时,分配了大约 100% 的 RAM 和大约 300GB 的交换区,分析停止并出现上述错误。但是,系统应该还有超过 400GB 的可用交换空间。

我已经检查过 CommitLimit(等于可用内存总量)和大约发生故障时的 Commied_AS,但最后一个约为 300GB(如图所示)顶部, 也)。

我还设置了:

echo 100 > /proc/sys/vm/overcommit_ratio

并且还尝试过:

systemctl disable --now systemd-oomd
systemctl mask system-oomd

有人知道是否有任何其他系统参数/选项可能会限制可用交换大小?

非常感谢您的帮助。

相关内容