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