【问题标题】:Requesting all processors for a node请求节点的所有处理器
【发布时间】:2014-04-01 14:35:48
【问题描述】:

我需要在 PBS 集群上运行 Java 应用程序,但我有点不清楚它的行为方式。

应用程序启动了几个线程,其数量取决于运行它的节点上的内核数量。然后每个内核启动 2 个线程。

对我来说最好的办法是请求对 PBS 集群中的一个节点的完全访问权限,以便让这个东西在上面运行。也就是说,保留一个节点上的所有核心。我还没有看到我怎么能做到这一点。我看到的只是 ppn 参数,它请求每个节点的特定数量的核心,但节点是异构的,所以我不想指定单个 ppn 数字,这取决于我得到的节点类型。

如果这不可能,我需要了解指定 ppn 时作业的行为方式。我可以指示 Java 应用程序只创建 X 多个线程,但我认为我无法控制这些线程将在哪些内核上运行。每个内核创建 2 个线程对我们来说是一个经验法则,并且可能会发生所有线程都想一直运行的情况,在这种情况下,我使用的 CPU 资源将比我请求的多 100%。我的理解是否正确,即 PBS 不会对我的进程实施任何限制,但实际上可能会监控它,如果它超过指定的资源使用量,甚至会终止我的进程?

TL;DR;

总结一下:

  1. 我是否可以请求对节点的完全访问权限(保留节点上的所有内核用于作业)?
  2. 如果我只请求节点上的一小部分核心,如果超过该限制,PBS 会终止我的工作吗?

【问题讨论】:

  • 你用的是什么调度器?
  • 其实问题已经变了,所以我不再需要这个了。我们可能确实有办法将 Java 应用程序限制为特定数量的内核,最终我们将使用 ppn 来控制它。但要回答您的问题,我们使用的是摩押。我发现了一些声称保留整个节点的东西:“#PBS -W x=NACCESSPOLICY:SINGLEJOB”,但我还没有测试过它是否有效。乍一看,我并没有那么相信。
  • 如果你设置它,它将保证 Moab 不会再向该节点发送任何作业。

标签: pbs torque


【解决方案1】:

我能否请求对节点的完全访问权限(保留节点上的所有内核用于作业)?

结合 Moab,您可以使用您在评论中声明的参数:

#PBS -W x=NACCESSPOLICY:SINGLEJOB

这保证 Moab 不会再向同一个节点发送任何作业。这不会使每个节点的所有处理器都显示在$PBS_NODEFILE 中,但它允许您使用整个节点而无需踩到其他任何东西。

如果我只请求节点上的一小部分核心,如果我超过该限制,PBS 会终止我的工作吗?

不,不会。默认情况下,TORQUE 不会强制您仅使用您请求的内核。这里需要注意的是,如果您将 TORQUE 配置为使用 cpusets,则 cpusets 会将您的进程限制为仅分配给您的处理器。如果您使用的是 3.0.0 或更高版本的 TORQUE,您可以添加

#PBS -E

到你的工作脚本来解决这个问题。这告诉妈妈您对节点具有独占访问权限,并指示妈妈将机器中的所有 cpu 放入您的 cpuset 中。

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多