在Grid Engine / Sun Grid Engine / Grid Engine的子上使用Docker

时间:2016-02-09 23:36:30

标签: process docker sungridengine pstree

有没有人在Grid Engine / Sun Grid Engine / Grid Engine的儿子上运行Docker并能够monitor the resource used by the daemon?问题是当我qsub docker run ...时,容器中的实际进程由docker守护进程而不是docker客户端运行,这意味着进程树是不同的。

SGE是否有办法跟踪不同树中进程的资源(我不假设)?

另一个选项是qsub首先启动docker守护程序然后运行所需docker run命令的脚本,以便所有进程都在SGE启动的同一进程树中。这将要求sge具有启动守护程序(root访问权限)的权限,并且还可能导致在主机上运行多个docker守护程序。

替代流程树的另一个问题是作业是否提交了指定的daemeon(-d)。在这种情况下,docker客户端将完成,但docker守护程序可能仍在运行容器

1 个答案:

答案 0 :(得分:0)

你是正确的,当你使用#docker run ....'它与守护进程通信并从映像创建容器。这意味着进程树不能被Grid Engine'无法管理。因为Grid Engine execd(启动作业的守护程序)不是树的父级。使用Sun Grid Engine,Grid Engine和Open Grid Scheduler,目前无法将Grid Engine插入到流程树中。

您可以修改Grid Engine源代码并使用Docker API来控制容器并从容器中收集资源信息 - 但是我不认为有人在Sun Grid Engine中完成了这项工作。

然而,Univa Grid Engine,Grid Engine的商业版确实具有此功能(免责声明:我为Univa工作)。 Univa Grid Engine使用Docker API来启动容器,并且有一个共同牧羊人,它是一个小型守护程序,在容器中运行以收集资源使用并提供作业控制。