3

有没有人有在 Grid Engine / Sun Grid Engine / Son of Grid Engine 上运行 Docker 并能够监控守护程序使用的资源的经验?问题是当 I 时qsub docker run ...,容器中的实际进程是由docker守护进程而不是docker客户端运行的,这意味着进程树是不同的。

SGE 有什么方法可以跟踪不同树中进程的资源(我认为不会)?

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

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

4

1 回答 1

1

你是对的,当你使用'docker run ....'时,它会与守护进程对话并从图像创建一个容器。这意味着进程树“不能由 Grid Engine 管理”,因为 Grid Engine execd(启动作业的守护程序)不是树的父级。对于 Sun Grid Engine、Grid Engine 之子和 Open Grid Scheduler,目前无法将 Grid Engine 插入到流程树中。

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

然而,Grid Engine 的商业版本 Univa Grid Engine 确实具有此功能(免责声明:我为 Univa 工作)。Univa Grid Engine 使用 Docker API 来启动容器,并有一个 co-shepherd,它是一个在容器中运行的小型守护进程,用于收集资源使用情况并提供作业控制。

于 2016-03-28T14:43:22.443 回答