diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java -- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java -- b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClusterMetrics.java index 5917b99..5747620 100644 @@ -30,6 +30,7 @@ import org.apache.hadoop.metrics2.annotation.Metrics; import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.metrics2.lib.MetricsRegistry; import org.apache.hadoop.metrics2.lib.MutableGaugeInt; +import org.apache.hadoop.metrics2.lib.MutableCounterLong; import org.apache.hadoop.metrics2.lib.MutableRate; import com.google.common.annotations.VisibleForTesting; @@ -48,6 +49,7 @@ public class ClusterMetrics { @Metric("# of Shutdown NMs") MutableGaugeInt numShutdownNMs; @Metric("AM container launch delay") MutableRate aMLaunchDelay; @Metric("AM register delay") MutableRate aMRegisterDelay; + @Metric("Aggregate # of acquired containers") MutableCounterLong aggregateContainersAcquired; private static final MetricsInfo RECORD_INFO = info("ClusterMetrics", "Metrics for the Yarn Cluster"); @@ -190,4 +192,12 @@ public class ClusterMetrics { aMRegisterDelay.add(delay); } + public void incrNumAggregateContainersAcquired() { + aggregateContainersAcquired.incr(); + } + + public long getNumAggregateContainersAcquired(){ + return aggregateContainersAcquired.value(); + } + } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java -- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java -- b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java index 857e736..3c657f7 100644 @@ -60,6 +60,7 @@ import org.apache.hadoop.yarn.api.records.SchedulingRequest; import org.apache.hadoop.yarn.api.records.UpdateContainerError; import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager; import org.apache.hadoop.yarn.server.api.ContainerType; +import org.apache.hadoop.yarn.server.resourcemanager.ClusterMetrics; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.RMServerUtils; import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager; @@ -674,6 +675,7 @@ public class SchedulerApplicationAttempt implements SchedulableEntity { private Container updateContainerAndNMToken(RMContainer rmContainer, ContainerUpdateType updateType) { + ClusterMetrics metrics = ClusterMetrics.getMetrics(); Container container = rmContainer.getContainer(); ContainerType containerType = ContainerType.TASK; if (updateType != null) { @@ -707,6 +709,12 @@ public class SchedulerApplicationAttempt implements SchedulableEntity { // This is a newly allocated container rmContainer.handle(new RMContainerEvent( rmContainer.getContainerId(), RMContainerEventType.ACQUIRED)); + metrics.incrNumAggregateContainersAcquired(); + long currNumAggregateContainersAcquired = metrics.getNumAggregateContainersAcquired(); + //Now, log the info every 100 acquired containers, in order to get the throughput(containers/s) + if (currNumAggregateContainersAcquired != 0 && currNumAggregateContainersAcquired %100 == 0) { + LOG.info("Current acquiredContainers: "+currNumAggregateContainersAcquired+" Current time: "+System.currentTimeMillis()); + } } else { // Resource increase is handled as follows: // If the AM does not use the updated token to increase the container