diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java index 8022a07e17c..181094ea6c6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java @@ -582,6 +582,11 @@ private ResourceUtilization getNodeUtilization() { private void updateNMResource(Resource resource) { metrics.addResource(Resources.subtract(resource, totalResource)); this.totalResource = resource; + + // Update the containers monitor + ContainersMonitor containersMonitor = + this.context.getContainerManager().getContainersMonitor(); + containersMonitor.setAllocatedResourcesForContainers(totalResource); } // Iterate through the NMContext and clone and get all the containers' diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java index daecc288796..002035bcdc9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java @@ -64,4 +64,10 @@ static void decreaseResourceUtilization( * containersMonitor.getVmemRatio()); resourceUtil.subtractFrom((int)resource.getMemorySize(), vmem, vCores); } + + /** + * Set the allocated resources for containers. + * @param resource Resources allocated for the containers. + */ + void setAllocatedResourcesForContainers(Resource resource); } diff --git a/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 b/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 index b46e6204b9d..dee878bd7b2 100644 --- a/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 +++ b/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 @@ -155,23 +155,21 @@ protected void serviceInit(Configuration myConf) throws Exception { NodeManagerHardwareUtils.getContainerMemoryMB( this.resourceCalculatorPlugin, this.conf) * 1024 * 1024L; - long configuredVCoresForContainers = + int configuredVCoresForContainers = NodeManagerHardwareUtils.getVCores(this.resourceCalculatorPlugin, this.conf); - // Setting these irrespective of whether checks are enabled. Required in - // the UI. - // ///////// Physical memory configuration ////// - this.maxPmemAllottedForContainers = configuredPMemForContainers; - this.maxVCoresAllottedForContainers = configuredVCoresForContainers; - // ///////// Virtual memory configuration ////// vmemRatio = this.conf.getFloat(YarnConfiguration.NM_VMEM_PMEM_RATIO, YarnConfiguration.DEFAULT_NM_VMEM_PMEM_RATIO); Preconditions.checkArgument(vmemRatio > 0.99f, YarnConfiguration.NM_VMEM_PMEM_RATIO + " should be at least 1.0"); - this.maxVmemAllottedForContainers = - (long) (vmemRatio * configuredPMemForContainers); + + // Setting these irrespective of whether checks are enabled. + // Required in the UI. + Resource resource = Resource.newInstance( + configuredPMemForContainers, configuredVCoresForContainers); + setAllocatedResourcesForContainers(resource); pmemCheckEnabled = this.conf.getBoolean( YarnConfiguration.NM_PMEM_CHECK_ENABLED, @@ -908,6 +906,14 @@ public long getVCoresAllocatedForContainers() { return this.maxVCoresAllottedForContainers; } + @Override + public void setAllocatedResourcesForContainers(final Resource resource) { + this.maxVCoresAllottedForContainers = resource.getVirtualCores(); + this.maxPmemAllottedForContainers = resource.getMemorySize(); + this.maxVmemAllottedForContainers = + (long) (vmemRatio * maxPmemAllottedForContainers); + } + /** * Is the total virtual memory check enabled? *