Index: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java (date 1491242834000) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java (date 1491413013000) @@ -422,7 +422,6 @@ long vmemUsageByAllContainers = 0; long pmemByAllContainers = 0; long cpuUsagePercentPerCoreByAllContainers = 0; - long cpuUsageTotalCoresByAllContainers = 0; for (Entry entry : trackingContainers .entrySet()) { ContainerId containerId = entry.getKey(); @@ -447,7 +446,6 @@ // if machine has 6 cores and 3 are used, // cpuUsagePercentPerCore should be 300% and - // cpuUsageTotalCoresPercentage should be 50% float cpuUsagePercentPerCore = pTree.getCpuUsagePercent(); if (cpuUsagePercentPerCore < 0) { // CPU usage is not available likely because the container just @@ -469,7 +467,6 @@ pmemByAllContainers += currentPmemUsage; // Accounting the total cpu usage for all containers cpuUsagePercentPerCoreByAllContainers += cpuUsagePercentPerCore; - cpuUsageTotalCoresByAllContainers += cpuUsagePercentPerCore; reportResourceUsage(containerId, currentPmemUsage, cpuUsagePercentPerCore); @@ -483,8 +480,7 @@ LOG.debug("Total Resource Usage stats in NM by all containers : " + "Virtual Memory= " + vmemUsageByAllContainers + ", Physical Memory= " + pmemByAllContainers - + ", Total CPU usage= " + cpuUsageTotalCoresByAllContainers - + ", Total CPU(% per core) usage" + + ", Total CPU usage(% per core)= " + cpuUsagePercentPerCoreByAllContainers); } @@ -572,6 +568,9 @@ ProcessTreeInfo ptInfo, long currentVmemUsage, long currentPmemUsage, ResourceUtilization trackedContainersUtilization) { + // if machine has 6 cores and 3 are used, + // cpuUsagePercentPerCore should be 300% and + // cpuUsageTotalCoresPercentage should be 50% float cpuUsagePercentPerCore = pTree.getCpuUsagePercent(); float cpuUsageTotalCoresPercentage = cpuUsagePercentPerCore / resourceCalculatorPlugin.getNumProcessors(); @@ -867,16 +866,6 @@ @SuppressWarnings("unchecked") public void handle(ContainersMonitorEvent monitoringEvent) { ContainerId containerId = monitoringEvent.getContainerId(); - if (!containersMonitorEnabled) { - if (monitoringEvent.getType() == ContainersMonitorEventType - .CHANGE_MONITORING_CONTAINER_RESOURCE) { - // Nothing to enforce. Update container resource immediately. - ChangeMonitoringContainerResourceEvent changeEvent = - (ChangeMonitoringContainerResourceEvent) monitoringEvent; - changeContainerResource(containerId, changeEvent.getResource()); - } - return; - } switch (monitoringEvent.getType()) { case START_MONITORING_CONTAINER: @@ -897,19 +886,23 @@ ContainersMonitorEvent monitoringEvent, ContainerId containerId) { ChangeMonitoringContainerResourceEvent changeEvent = (ChangeMonitoringContainerResourceEvent) monitoringEvent; - ProcessTreeInfo processTreeInfo = trackingContainers.get(containerId); - if (processTreeInfo == null) { - LOG.warn("Failed to track container " - + containerId.toString() - + ". It may have already completed."); - return; - } - LOG.info("Changing resource-monitoring for " + containerId); - updateContainerMetrics(monitoringEvent); - long pmemLimit = changeEvent.getResource().getMemorySize() * 1024L * 1024L; - long vmemLimit = (long) (pmemLimit * vmemRatio); - int cpuVcores = changeEvent.getResource().getVirtualCores(); - processTreeInfo.setResourceLimit(pmemLimit, vmemLimit, cpuVcores); + if (containersMonitorEnabled) { + ProcessTreeInfo processTreeInfo = trackingContainers.get(containerId); + if (processTreeInfo == null) { + LOG.warn("Failed to track container " + + containerId.toString() + + ". It may have already completed."); + return; + } + LOG.info("Changing resource-monitoring for " + containerId); + updateContainerMetrics(monitoringEvent); + long pmemLimit = + changeEvent.getResource().getMemorySize() * 1024L * 1024L; + long vmemLimit = (long) (pmemLimit * vmemRatio); + int cpuVcores = changeEvent.getResource().getVirtualCores(); + processTreeInfo.setResourceLimit(pmemLimit, vmemLimit, cpuVcores); + } + changeContainerResource(containerId, changeEvent.getResource()); }