在我们的一个计算集群中,我们的系统具有独特的硬件资源,这些资源的访问由设备文件权限控制。每个节点都有两个或四个这样的资源,以及多个 CPU 核心。我们希望能够在同一节点上安排不同用户的作业,并限制对正确分配的资源的访问。(某些队列甚至可能只使用 CPU,没有访问权限。)
有一段时间,我们一直奉行“嘿,注意并保持友好”的政策,但即使出于最好的意图,每个人也很难坚持下去。因此,我们只是一次为特定用户安排整个节点。这对于单线程、单进程任务来说是一种浪费。
使用 Torque,可以运行以 root 身份运行序言脚本在作业开始之前。这可以适当地设置设备权限。但我们正在运行(娘家姓Sun) Grid Engine。它有每个队列的prolog
脚本,但它们以作业所属的用户身份运行(如 Torque 的prologue.user
),这在这里没有帮助。
是否有一些明显的我遗漏的东西(我希望),或者有其他方法来解决这个问题?我意识到我有源代码,因此可以做任何事物,但我希望有一种我只是缺少的标准方法。
谢谢!
答案1
实际上,prolog 脚本可以以任何用户身份运行。
从man queue_conf
:
序言
在执行 Grid Engine 作业之前启动的 shell 脚本的可执行路径,其环境设置与之后启动的 Grid Engine 作业相同。可选前缀“user@”指定要启动此过程的用户。
因此设置prolog root@/path/to/prolog
应该以 root 身份执行。