diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java index aca3e44..0474955 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java @@ -44,10 +44,12 @@ static final float Q_MAX_WIDTH = 0.8f; static final float Q_STATS_POS = Q_MAX_WIDTH + 0.05f; static final String Q_END = "left:101%"; - static final String Q_GIVEN = "left:0%;background:none;border:1px dashed rgba(0,0,0,0.25)"; + static final String Q_GIVEN = "left:0%;background:none;border:1px solid rgba(0,0,0,1)"; + static final String Q_DYNAMIC_FS = "left:0%;background:none;border:1px dashed rgba(0,0,0,1)"; static final String Q_OVER = "background:rgba(255, 140, 0, 0.8)"; static final String Q_UNDER = "background:rgba(50, 205, 50, 0.8)"; - + static final String GUARANTEED_FAIR_SHARE = "Guaranteed Fair Share"; + static final String CURRENT_FAIR_SHARE = "Current Fair Share"; @RequestScoped static class FSQInfo { FairSchedulerQueueInfo qinfo; @@ -73,8 +75,8 @@ protected void render(Block html) { if (maxApps < Integer.MAX_VALUE) { ri._("Max Running Applications:", qinfo.getMaxApplications()); } - ri._("Fair Share:", qinfo.getFairShare().toString()); - + ri._(GUARANTEED_FAIR_SHARE + ":", qinfo.getFairShare().toString()); + ri._(CURRENT_FAIR_SHARE + ":", qinfo.getDynamicFairShare().toString()); html._(InfoBlock.class); // clear the info contents so this queue's info doesn't accumulate into another queue's info @@ -96,15 +98,20 @@ public void render(Block html) { for (FairSchedulerQueueInfo info : subQueues) { float capacity = info.getMaxResourcesFraction(); float fairShare = info.getFairShareMemoryFraction(); + float dynamicFairShare = info.getDynamicFairShareMemoryFraction(); float used = info.getUsedMemoryFraction(); LI> li = ul. li(). a(_Q).$style(width(capacity * Q_MAX_WIDTH)). - $title(join("Fair Share:", percent(fairShare))). + $title(join(join(GUARANTEED_FAIR_SHARE + ":", percent(fairShare)), + join(" " + CURRENT_FAIR_SHARE + ":", percent(dynamicFairShare)))). span().$style(join(Q_GIVEN, ";font-size:1px;", width(fairShare/capacity))). _('.')._(). + span().$style(join(Q_DYNAMIC_FS, ";font-size:1px;", + width(dynamicFairShare/capacity))). + _('.')._(). span().$style(join(width(used/capacity), - ";font-size:1px;left:0%;", used > fairShare ? Q_OVER : Q_UNDER)). + ";font-size:1px;left:0%;", used > dynamicFairShare ? Q_OVER : Q_UNDER)). _('.')._(). span(".q", info.getQueueName())._(). span().$class("qstats").$style(left(Q_STATS_POS)). @@ -156,7 +163,9 @@ public void render(Block html) { li().$style("margin-bottom: 1em"). span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). - _("Fair Share")._(). + _(GUARANTEED_FAIR_SHARE)._(). + span().$class("qlegend ui-corner-all").$style(Q_DYNAMIC_FS). + _(CURRENT_FAIR_SHARE)._(). span().$class("qlegend ui-corner-all").$style(Q_UNDER). _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FairSchedulerQueueInfo.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FairSchedulerQueueInfo.java index 2c1bc47..97f28ad 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FairSchedulerQueueInfo.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/FairSchedulerQueueInfo.java @@ -46,6 +46,8 @@ @XmlTransient private float fractionMemFairShare; @XmlTransient + private float fractionMemDynamicFairShare; + @XmlTransient private float fractionMemMinShare; @XmlTransient private float fractionMemMaxShare; @@ -54,6 +56,7 @@ private ResourceInfo maxResources; private ResourceInfo usedResources; private ResourceInfo fairResources; + private ResourceInfo dynamicFairResources; private ResourceInfo clusterResources; private String queueName; @@ -77,6 +80,7 @@ public FairSchedulerQueueInfo(FSQueue queue, FairScheduler scheduler) { clusterResources.getMemory(); fairResources = new ResourceInfo(queue.getFairShare()); + dynamicFairResources = new ResourceInfo(queue.getDynamicFairShare()); minResources = new ResourceInfo(queue.getMinShare()); maxResources = new ResourceInfo(queue.getMaxShare()); maxResources = new ResourceInfo( @@ -84,6 +88,8 @@ public FairSchedulerQueueInfo(FSQueue queue, FairScheduler scheduler) { scheduler.getClusterResource())); fractionMemFairShare = (float)fairResources.getMemory() / clusterResources.getMemory(); + fractionMemDynamicFairShare = (float) dynamicFairResources.getMemory() + / clusterResources.getMemory(); fractionMemMinShare = (float)minResources.getMemory() / clusterResources.getMemory(); fractionMemMaxShare = (float)maxResources.getMemory() / clusterResources.getMemory(); @@ -107,6 +113,10 @@ public float getFairShareMemoryFraction() { return fractionMemFairShare; } + public float getDynamicFairShareMemoryFraction() { + return fractionMemDynamicFairShare; + } + /** * Returns the fair share of this queue in megabytes. */ @@ -114,6 +124,10 @@ public ResourceInfo getFairShare() { return fairResources; } + public ResourceInfo getDynamicFairShare() { + return dynamicFairResources; + } + public ResourceInfo getMinResources() { return minResources; }