我的软件运行的命令类似于:
查找 | xargs 做了一项潜在的内存消耗工作
问题是有时一个可能需要内存的工作太饿了,系统没有响应,我必须重新启动它。我的理解是,这是由于内存分配超过承诺而发生的。我想要发生的是,如果 xargs 生成的作业需要比可用内存更多的内存,它就会死掉(我可以接受),就是这样。我想如果我在系统范围内关闭过度使用,我可以得到这种行为,但这不是一个选项。是否可以将其关闭以进行进程?
我正在考虑的一个可能的解决方案是设置
ulimit -v 内存大小
但有些事情告诉我这不是一个好主意。
我认为您正在寻找的是
--memfree
GNU Parallel:这只会
dostuff
在有 1G RAM 可用时开始。它将再启动一个,直到可用 RAM 少于 1G 或每个 CPU 线程运行 1 个作业。如果有 0.5G RAM(1G RAM 的 50%)可用,则最年轻的作业将被终止。所以在元代码中:如果结合使用,
--retries 10
您可以告诉 GNU Parallel 重试已终止的作业 10 次。如果
dostuff
需要一段时间来吞噬内存,--delay 30s
请在生成下一个作业之前等待 30 秒。如果你想避免 cgroups