我需要在 PBS 集群上运行一个 Java 应用程序,我有点不清楚它应该如何表现。
应用程序启动了几个线程,线程的数量取决于运行它的节点上的内核数量。然后每个内核启动 2 个线程。
对我来说最好的办法是请求对 PBS 集群中的一个节点的完全访问权限,以便让这个东西在上面运行。也就是说,保留一个节点上的所有核心。我还没有看到我怎么能做到这一点。我所看到的只是 ppn 参数,它请求每个节点的特定数量的核心,但节点是异构的,所以我不想指定单个 ppn 数字,这取决于我得到的节点类型。
如果这不可能,我需要了解指定 ppn 时作业的行为方式。我可以指示 Java 应用程序只创建 X 多个线程,但我认为我无法控制这些线程将在哪些内核上运行。每个核心创建 2 个线程对我们来说是一个经验法则,并且可能会发生所有线程都想一直运行的情况,在这种情况下,我使用的 CPU 资源将比我请求的多 100%。我的理解是否正确,即 PBS 不会对我的进程实施任何限制,但实际上可能会监控它,如果它超过指定的资源使用量,甚至会终止我的进程?
TL;博士;
所以总结一下:
- 我可以请求对节点的完全访问权限(保留节点上的所有内核用于工作)吗?
- 如果我只请求节点上的一小部分核心,如果超过该限制,PBS 会终止我的工作吗?