此Azure Batch自动缩放公式的含义是什么?

时间:2018-10-22 08:36:27

标签: azure formula

这是Azure文档中的一个示例。但是,我发现这很令人困惑。

startingNumberOfVMs = 1;
maxNumberofVMs = 25;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples);

我对这个公式的看法是:

- We start with 1 VM
- The maximum VM we can reach to is 25
- PendingTasks = the number of running VM. Let say 10 VMs are running.
- In last 180 seconds, if the percent of pending task < 70% (that means < 3 VM running?) then ... 

由于我没有任何经验,请有人详细解释。

2 个答案:

答案 0 :(得分:1)

对于自动缩放公式:

  

批处理服务使用您的公式来确定目标数量   在下一个处理间隔中计算池中的节点。

因此该示例表示:

批处理池从1个节点开始,最大节点数为25。这意味着您最多只能有25个节点。

并且在下一个处理间隔中,如果公式发现过去180秒内的未完成任务的平均数目少于70(您可以根据环境随意更改此数目),则表示未完成任务是不会太多,工作也不会太繁重。因此目标节点仍为1,无需增长。但是,如果平均数量超过70,则目标节点需要自动缩放。该公式可确保目标专用节点数不会超过25个VM。所以

$TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples)

提交新任务后,池将自动增长。完成任务后,虚拟机将一一释放,并且自动缩放公式会缩小池。

这是我对“批次自动缩放”的理解。希望对您有帮助。

答案 1 :(得分:0)

该函数希望将与最近180秒内未决任务(未决=正在运行+已排队)的平均数量相等的节点数设置为目标。基本上,它希望每个任务大约有一个节点。

但是,只有在有足够的数据做出有意义的决策时,才会这样做。样本收集并不总是成功。

如果在过去的180秒内,无论出于何种原因,未收集到足够数量的待处理任务样本(具体而言,少于70%),那么我们默认为1个节点。