我使用 ADO、Matlab/Simulink 和 Windows 自托管代理建立了构建和测试 CI 管道。当我们推送时,一个构建任务被发送到一台服务器,一个测试任务被发送到3台服务器(其中与构建服务器相同),每台服务器有3个代理。因此总共下载了 9 个 git 存储库并在其上运行任务。横向扩展我们有服务器隔离,纵向扩展我有文件和作业隔离。因此,一次,3 个作业在同一台计算机上的 3 个不同的代理文件沙箱上运行,并且这种情况发生在 3 台不同的计算机上。我运行了大约 100-200 MIL 测试,它们平均需要 30 分钟到 1 小时才能单独完成。并行运行时,我发现在最好的情况下每个测试会下降到 1.6 分钟(第二张图片)。所有测试+构建在 3 小时内完成。
现在我的问题是,在不同的提交上运行完全相同的一对测试并行运行时,我发现在最坏的情况下每个测试会下降到 6.6 分钟(第三张图片)。所有测试 + 构建在 10 小时内完成。
注:
为什么会发生这种情况,有什么建议可以获得更一致和最佳的性能吗?
我分享了一些有关问题的幻灯片和图片:
幻灯片 1:蓝色是我们的构建和测试管道。黄色表示可能会使用更多队友计算机进行并行处理。
图1:最佳结果
图2:最坏的结果
虽然一台机器上可以安装多个代理,但不建议这样做。 在同一台计算机上安装两个或多个代理可能会对性能和管道结果产生不利影响。我们强烈建议每台计算机仅安装一个代理。
在同一台机器上使用多个代理运行并行作业时,负面影响可能会更频繁地发生。
此外,代理机器本身的网络、CPU 利用率和其他性能也会影响其上运行的管道作业的性能。