YARN-3432. Cluster metrics have wrong Total Memory when there is reserved memory on CS. (Brahma Reddy Battula via curino)

(cherry picked from commit 892a8348fc)
This commit is contained in:
Carlo Curino 2016-10-27 15:12:10 -07:00
parent 4274600b95
commit 58ac40b552
1 changed files with 9 additions and 2 deletions

View File

@ -25,6 +25,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.ClusterMetrics;
import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler;
@XmlRootElement(name = "clusterMetrics") @XmlRootElement(name = "clusterMetrics")
@XmlAccessorType(XmlAccessType.FIELD) @XmlAccessorType(XmlAccessType.FIELD)
@ -87,8 +88,14 @@ public class ClusterMetricsInfo {
this.containersPending = metrics.getPendingContainers(); this.containersPending = metrics.getPendingContainers();
this.containersReserved = metrics.getReservedContainers(); this.containersReserved = metrics.getReservedContainers();
this.totalMB = availableMB + allocatedMB; if (rs instanceof CapacityScheduler) {
this.totalVirtualCores = availableVirtualCores + allocatedVirtualCores; this.totalMB = availableMB + allocatedMB + reservedMB;
this.totalVirtualCores = availableVirtualCores + allocatedVirtualCores
+ containersReserved;
} else {
this.totalMB = availableMB + allocatedMB;
this.totalVirtualCores = availableVirtualCores + allocatedVirtualCores;
}
this.activeNodes = clusterMetrics.getNumActiveNMs(); this.activeNodes = clusterMetrics.getNumActiveNMs();
this.lostNodes = clusterMetrics.getNumLostNMs(); this.lostNodes = clusterMetrics.getNumLostNMs();
this.unhealthyNodes = clusterMetrics.getUnhealthyNMs(); this.unhealthyNodes = clusterMetrics.getUnhealthyNMs();