Skip to content

Commit f3a27f2

Browse files
authored
YARN-11579. Fix 'Physical Mem Used' and 'Physical VCores Used' are not displaying data. (#6123) Contributed by Shilun Fan.
Reviewed-by: Inigo Goiri <inigoiri@apache.org> Signed-off-by: Shilun Fan <slfan1989@apache.org>
1 parent ababe3d commit f3a27f2

File tree

4 files changed

+42
-1
lines changed

4 files changed

+42
-1
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/ClusterMetricsInfo.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ public class ClusterMetricsInfo {
5454
private int containersPending;
5555

5656
private long totalMB;
57+
private long utilizedMB;
5758
private long totalVirtualCores;
59+
private long utilizedVirtualCores;
5860
private int utilizedMBPercent;
5961
private int utilizedVirtualCoresPercent;
6062
private int rmSchedulerBusyPercent;
@@ -167,6 +169,7 @@ public ClusterMetricsInfo(final ResourceScheduler rs) {
167169
.getContainerAssignedPerSecond();
168170
this.rmEventQueueSize = clusterMetrics.getRmEventQueueSize();
169171
this.schedulerEventQueueSize = clusterMetrics.getSchedulerEventQueueSize();
172+
this.utilizedVirtualCores = clusterMetrics.getUtilizedVirtualCores();
170173
}
171174

172175
public int getAppsSubmitted() {
@@ -432,4 +435,20 @@ public int getRmEventQueueSize() {
432435
public int getSchedulerEventQueueSize() {
433436
return schedulerEventQueueSize;
434437
}
438+
439+
public long getUtilizedVirtualCores() {
440+
return utilizedVirtualCores;
441+
}
442+
443+
public void setUtilizedVirtualCores(long utilizedVirtualCores) {
444+
this.utilizedVirtualCores = utilizedVirtualCores;
445+
}
446+
447+
public long getUtilizedMB() {
448+
return utilizedMB;
449+
}
450+
451+
public void setUtilizedMB(long utilizedMB) {
452+
this.utilizedMB = utilizedMB;
453+
}
435454
}

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServices.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ public void verifyClusterMetricsJSON(JSONObject json) throws JSONException,
481481
Exception {
482482
assertEquals("incorrect number of elements", 1, json.length());
483483
JSONObject clusterinfo = json.getJSONObject("clusterMetrics");
484-
assertEquals("incorrect number of elements", 35, clusterinfo.length());
484+
assertEquals("incorrect number of elements", 37, clusterinfo.length());
485485
verifyClusterMetrics(
486486
clusterinfo.getInt("appsSubmitted"), clusterinfo.getInt("appsCompleted"),
487487
clusterinfo.getInt("reservedMB"), clusterinfo.getInt("availableMB"),

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/RouterWebServiceUtil.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,10 +506,14 @@ public static void mergeMetrics(ClusterMetricsInfo metrics,
506506

507507
metrics.setTotalMB(metrics.getTotalMB()
508508
+ metricsResponse.getTotalMB());
509+
metrics.setUtilizedMB(metrics.getUtilizedMB()
510+
+ metricsResponse.getUtilizedMB());
509511
metrics.setTotalVirtualCores(metrics.getTotalVirtualCores()
510512
+ metricsResponse.getTotalVirtualCores());
511513
metrics.setTotalNodes(metrics.getTotalNodes()
512514
+ metricsResponse.getTotalNodes());
515+
metrics.setUtilizedVirtualCores(metrics.getUtilizedVirtualCores()
516+
+ metricsResponse.getUtilizedVirtualCores());
513517
metrics.setLostNodes(metrics.getLostNodes()
514518
+ metricsResponse.getLostNodes());
515519
metrics.setUnhealthyNodes(metrics.getUnhealthyNodes()
@@ -524,6 +528,14 @@ public static void mergeMetrics(ClusterMetricsInfo metrics,
524528
+ metricsResponse.getActiveNodes());
525529
metrics.setShutdownNodes(metrics.getShutdownNodes()
526530
+ metricsResponse.getShutdownNodes());
531+
532+
int utilizedVirtualCoresPercent = metrics.getTotalVirtualCores() <= 0 ? 0 :
533+
(int) (metrics.getUtilizedVirtualCores() * 100 / metrics.getTotalVirtualCores());
534+
metrics.setUtilizedVirtualCoresPercent(utilizedVirtualCoresPercent);
535+
536+
int utilizedMBPercent = metrics.getTotalMB() <= 0 ? 0 :
537+
(int) (metrics.getUtilizedMB() * 100 / metrics.getTotalMB());
538+
metrics.setUtilizedMBPercent(utilizedMBPercent);
527539
}
528540

529541
/**

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestRouterWebServiceUtil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,10 +489,16 @@ public void testMergeMetrics() {
489489
Assert.assertEquals(
490490
metricsResponse.getTotalMB() + metricsClone.getTotalMB(),
491491
metrics.getTotalMB());
492+
Assert.assertEquals(
493+
metricsResponse.getUtilizedMB() + metricsClone.getUtilizedMB(),
494+
metrics.getUtilizedMB());
492495
Assert.assertEquals(
493496
metricsResponse.getTotalVirtualCores()
494497
+ metricsClone.getTotalVirtualCores(),
495498
metrics.getTotalVirtualCores());
499+
Assert.assertEquals(
500+
metricsResponse.getUtilizedVirtualCores() + metricsClone.getUtilizedVirtualCores(),
501+
metrics.getUtilizedVirtualCores());
496502
Assert.assertEquals(
497503
metricsResponse.getTotalNodes() + metricsClone.getTotalNodes(),
498504
metrics.getTotalNodes());
@@ -544,7 +550,9 @@ private ClusterMetricsInfo createClusterMetricsClone(
544550
metricsClone.setContainersPending(metrics.getPendingContainers());
545551

546552
metricsClone.setTotalMB(metrics.getTotalMB());
553+
metricsClone.setUtilizedMB(metrics.getUtilizedMB());
547554
metricsClone.setTotalVirtualCores(metrics.getTotalVirtualCores());
555+
metricsClone.setUtilizedVirtualCores(metrics.getUtilizedVirtualCores());
548556
metricsClone.setTotalNodes(metrics.getTotalNodes());
549557
metricsClone.setLostNodes(metrics.getLostNodes());
550558
metricsClone.setUnhealthyNodes(metrics.getUnhealthyNodes());
@@ -580,7 +588,9 @@ private void setUpClusterMetrics(ClusterMetricsInfo metrics, long seed) {
580588
metrics.setContainersPending(rand.nextInt(1000));
581589

582590
metrics.setTotalMB(rand.nextInt(1000));
591+
metrics.setUtilizedMB(metrics.getTotalMB() - rand.nextInt(100));
583592
metrics.setTotalVirtualCores(rand.nextInt(1000));
593+
metrics.setUtilizedVirtualCores(metrics.getUtilizedVirtualCores() - rand.nextInt(100));
584594
metrics.setTotalNodes(rand.nextInt(1000));
585595
metrics.setLostNodes(rand.nextInt(1000));
586596
metrics.setUnhealthyNodes(rand.nextInt(1000));

0 commit comments

Comments
 (0)