Exemplo n.º 1
0
 private ResourceLimits GetResourceLimitsOfChild(CSQueue child, Org.Apache.Hadoop.Yarn.Api.Records.Resource
                                                 clusterResource, ResourceLimits parentLimits)
 {
     // Set resource-limit of a given child, child.limit =
     // min(my.limit - my.used + child.used, child.max)
     // Parent available resource = parent-limit - parent-used-resource
     Org.Apache.Hadoop.Yarn.Api.Records.Resource parentMaxAvailableResource = Resources
                                                                              .Subtract(parentLimits.GetLimit(), GetUsedResources());
     // Child's limit = parent-available-resource + child-used
     Org.Apache.Hadoop.Yarn.Api.Records.Resource childLimit = Resources.Add(parentMaxAvailableResource
                                                                            , child.GetUsedResources());
     // Get child's max resource
     Org.Apache.Hadoop.Yarn.Api.Records.Resource childConfiguredMaxResource = Resources
                                                                              .MultiplyAndNormalizeDown(resourceCalculator, labelManager.GetResourceByLabel(RMNodeLabelsManager
                                                                                                                                                            .NoLabel, clusterResource), child.GetAbsoluteMaximumCapacity(), minimumAllocation
                                                                                                        );
     // Child's limit should be capped by child configured max resource
     childLimit = Resources.Min(resourceCalculator, clusterResource, childLimit, childConfiguredMaxResource
                                );
     // Normalize before return
     childLimit = Resources.RoundDown(resourceCalculator, childLimit, minimumAllocation
                                      );
     return(new ResourceLimits(childLimit));
 }
Exemplo n.º 2
0
 private Org.Apache.Hadoop.Yarn.Api.Records.Resource GetCurrentLimitResource(string
                                                                             nodeLabel, Org.Apache.Hadoop.Yarn.Api.Records.Resource clusterResource, ResourceLimits
                                                                             currentResourceLimits)
 {
     /*
      * Current limit resource: For labeled resource: limit = queue-max-resource
      * (TODO, this part need update when we support labeled-limit) For
      * non-labeled resource: limit = min(queue-max-resource,
      * limit-set-by-parent)
      */
     Org.Apache.Hadoop.Yarn.Api.Records.Resource queueMaxResource = Resources.MultiplyAndNormalizeDown
                                                                        (resourceCalculator, labelManager.GetResourceByLabel(nodeLabel, clusterResource)
                                                                        , queueCapacities.GetAbsoluteMaximumCapacity(nodeLabel), minimumAllocation);
     if (nodeLabel.Equals(RMNodeLabelsManager.NoLabel))
     {
         return(Resources.Min(resourceCalculator, clusterResource, queueMaxResource, currentResourceLimits
                              .GetLimit()));
     }
     return(queueMaxResource);
 }