我的应用程序启动了数百个发送到SGE的子进程。由于作业失败,它们中很少有人占用大量内存。
我需要某种方法来监视主进程中客户端的内存使用情况,并在此类作业失败的情况下将其重新启动/重新提交给具有更高内存要求的网格。
我听说过一些关于缺少心跳算法的要求,但我对此并不了解。
这里的专家可以帮助我找到一个很好的解决方案吗?我的应用程序是Linux / Solaris上的c ++应用程序。
谢谢
汝池
最佳答案
我以前使用的解决方案是拥有一个脚本,该脚本可以捕获qstat-命令的输出(在我的情况下使用rsh)。我过滤我的工作并将所需的信息(在我的情况下是CPU)存储在不断更新的列表中。当作业中止或被杀死时,很容易返回并查看CPU使用率。它不是100%实时的,但对我来说足够好。
我选择的语言是Python,因为它包含易于使用的库来捕获输出并登录到远程计算机。但是,应该很容易实现类似在C ++中捕获rsh输出的功能。例如,您可以使用popen()将输出通过管道传递到您的应用程序中。我希望这有帮助。