Incredibuild 组件和架构

Incredibuild 包含两种类型的机器:Agent 和 Coordinator。

Agents

Agents 是用于运行您工作负载的机器。对 workload 进行请求的 Agent 被称为 initiator。利用自身某些空闲 CPU 资源辅助 Initiator 进行工作的 Agent 被称为 helper

  • Initiator Agent 将 Agent 分配至合适的解决方案之后,Agent 即可在 Incredibuild 中发起执行。衍生任务(作为这些执行的一部分)可能会由 Incredibuild 分发至可用 Agent(作为 Incredibuild 池的一部分)的各种空闲 CPU 上,从而提升了执行速度。此外,所有 Initiator Agent 均另可作为 Helper Agent。

  • Helper Agent 这些机器将用于执行分布式任务。Helper Agents 不需要具备任何 Incredibuild Agent 之外的程序。例如,如果您正在使用 Incredibuild 向 Helper A 分发 Visual Studio 编译,则此 Helper 将不需安装 Visual Studio,也无需安装编译器、其他构建工具以及您正在编译的源代码,仅在此主机上安装 Incredibuild Agent 即可。当分配至 Helper Agent 的作业执行完成后,相关输出会同步回 Initiator 机器(例如对象文件、 PDB 文件等)。

Coordinator

Coordinator 负责列出和管理所有作为 Incredibuild Environment 一部分的机器。每个 Incredibuild Environment 均应包含至少一个 Coordinator,且该 Coordinator 应能够安装在任意参与运行的机器中。

Coordinator 会执行以下功能:

  • 通过参与进入资源池,订阅以及取消订阅 Agent。

  • 通过从 Agent 处接收 Status Report,保持 Agent 信息更新。

  • 当任务正在等待分发时,Coordinator 会向 Initiator 提供所需的 Helper Agent。

  • Coordinator 负责将 Incredibuild 解决方案和核心包分配至 Agent。

Coordinator 会与 Helper Agent 进行交流,以确定 Helper 的 CPU 资源可用性。接收到来自 Initiator Agent 的资源请求时,Coordinator 会向 Initiator 提供 Environment 中可用的 Helper Agent 资源。Coordinator 还负责向 Agent 分配 Incredibuild 许可证。

除了主 Coordinator 外,您还可以安装并使用 Backup Coordinator。Backup Coordinator 是主 Coordinator 的后备,当主 Coordinator 不可用时,它会自动激活。

示例工作流

  1. Initiator 计算需要多少附加远端核心。

  2. Initiator 向 Coordinator 发送请求,要求获得所需数量的 Helper Agent。

  3. Coordinator 进行网络扫描,检查哪些资源可用,并将其分配至 Initiator 使用。

例如,如果 Initiator 想要分布式执行 10 个并发进程,并要求获得 10 个 Helper 核心,那么 Initiator 可能会从 Coordinator 处收到 10 个或以下数量的核心。执行完成了这 10 个进程后,如果 Initiator 还需要再分发 8 个进程,那么鉴于 Initiator 已分配到了 10 个 Helper 核心,它将不会再向 Coordinator 请求更多远端核心,而是会将其中两个远端核心释放回资源池。