diff --git 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 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 0feac3b..381049a 100644 --- 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 +++ 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 @@ -769,12 +769,16 @@ public void subtractNodeResourcesFromResourceUtilization( (int) (getVmemAllocatedForContainers() >> 20), 1.0f); } + /** + * Calculates the CPU usage that is assigned to the given + * {@link ProcessTreeInfo}. In particular, it takes into account the number of + * vCores that are allowed to be used by the NM, as well as the percentage of + * CPU dedicated to the NM. CPU usage is returned as a normalized value + * between {@literal >=} 0 and {@literal <=} 1. + */ private float allocatedCpuUsage(ProcessTreeInfo pti) { - float cpuUsagePercentPerCore = pti.getCpuVcores() * 100.0f; - float cpuUsageTotalCoresPercentage = cpuUsagePercentPerCore - / resourceCalculatorPlugin.getNumProcessors(); - return (cpuUsageTotalCoresPercentage * 1000 * - maxVCoresAllottedForContainers / nodeCpuPercentageForYARN) / 1000.0f; + return pti.getCpuVcores() * 100.0f / + (maxVCoresAllottedForContainers * nodeCpuPercentageForYARN); } @Override