我正在尝试跑步螃蟹(特别是“成对全局对齐”小节,它调用虚拟搜索)在 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
有人知道是否有任何其他系统参数/选项可能会限制可用交换大小?
非常感谢您的帮助。