【发布时间】:2013-06-26 05:50:43
【问题描述】:
我有一个通过包装器运行并作为网格 (Linux) 上的作业提交的应用程序。 y 任务是监视进程的 RAM 和虚拟内存使用情况,如果进程由于内存问题而失败,请再次将其重新提交到具有更高内存要求的网格(使用某些开关)。 我认为这可以通过从监视主应用程序的应用程序中调用一个单独的线程来实现,并在失败的情况下重新启动主应用程序。 我正在寻求更好地解决此问题的建议。
谢谢 汝驰
【问题讨论】:
我有一个通过包装器运行并作为网格 (Linux) 上的作业提交的应用程序。 y 任务是监视进程的 RAM 和虚拟内存使用情况,如果进程由于内存问题而失败,请再次将其重新提交到具有更高内存要求的网格(使用某些开关)。 我认为这可以通过从监视主应用程序的应用程序中调用一个单独的线程来实现,并在失败的情况下重新启动主应用程序。 我正在寻求更好地解决此问题的建议。
谢谢 汝驰
【问题讨论】:
线程将无法工作,因为 C 和 C++ mandate that returning from the main function kills all running threads(感谢 Do child threads exit when the parent thread terminates)。
您需要将其设为另一个进程,也许是一个脚本,该脚本启动该进程,然后管理您的应用程序。
【讨论】:
通常的方法是检查内存分配何时失败,即 malloc()。如果 malloc() 失败,则表明您的系统内存几乎已满,在这种特殊情况下,您可以做自己喜欢做的事情。
【讨论】: