缺少客户端机器的心跳

时间:2013-06-27 06:06:26

标签: c++ linux

我的应用程序启动了发送到SGE的数百个子进程。由于哪些工作失败,很少有人占用大量内存。 我需要一些方法来监视来自主进程的客户端的内存使用情况,并重新启动/重新提交到网格,以便在出现此类作业失败时具有更高的内存要求。 我听说过有关这种要求的心跳丢失算法,但我并不太了解它们。 请问专家可以帮我找到解决这个问题的好方法吗?我的应用程序是Linux / Solaris上的c ++应用程序。

由于 Ruchi

1 个答案:

答案 0 :(得分:0)

我之前使用过的解决方案是拥有一个捕获qstat命令输出的脚本(在我的例子中使用rsh)。我过滤我的工作并将我需要的信息(在我的情况下是CPU)存储在一个不断更新的列表中。当作业中止或被杀时,很容易返回并查看CPU使用情况。它不是100%实时,但对我来说足够好。

我选择的语言是Python,因为它包含易于使用的库,用于捕获输出和登录到远程计算机。但是,应该很容易实现像在C ++中捕获rsh输出。例如,您可以使用popen()将输出通过管道传输到应用程序中。我希望这会有所帮助。