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..29618ec 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,14 @@ 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)"; - + // Guaranteed_fair_share maps to steady fair share + static final String GUARANTEED_FAIR_SHARE = "Guaranteed Fair Share"; + // Current_fair_share maps to dynamic fair share + static final String CURRENT_FAIR_SHARE = "Current Fair Share"; @RequestScoped static class FSQInfo { FairSchedulerQueueInfo qinfo; @@ -73,8 +77,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.getSteadyFairShare().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 @@ -95,16 +99,21 @@ public void render(Block html) { UL ul = html.ul("#pq"); for (FairSchedulerQueueInfo info : subQueues) { float capacity = info.getMaxResourcesFraction(); - float fairShare = info.getFairShareMemoryFraction(); + float steadyFairShare = info.getSteadyFairShareMemoryFraction(); + 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))). - span().$style(join(Q_GIVEN, ";font-size:1px;", width(fairShare/capacity))). + $title(join(join(GUARANTEED_FAIR_SHARE + ":", percent(steadyFairShare)), + join(" " + CURRENT_FAIR_SHARE + ":", percent(dynamicFairShare)))). + span().$style(join(Q_GIVEN, ";font-size:1px;", width(steadyFairShare/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 +165,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..7f86731 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 @@ -44,7 +44,9 @@ @XmlTransient private float fractionMemUsed; @XmlTransient - private float fractionMemFairShare; + private float fractionMemSteadyFairShare; + @XmlTransient + private float fractionMemDynamicFairShare; @XmlTransient private float fractionMemMinShare; @XmlTransient @@ -53,7 +55,8 @@ private ResourceInfo minResources; private ResourceInfo maxResources; private ResourceInfo usedResources; - private ResourceInfo fairResources; + private ResourceInfo steadyFairResources; + private ResourceInfo dynamicFairResources; private ResourceInfo clusterResources; private String queueName; @@ -75,15 +78,19 @@ public FairSchedulerQueueInfo(FSQueue queue, FairScheduler scheduler) { usedResources = new ResourceInfo(queue.getResourceUsage()); fractionMemUsed = (float)usedResources.getMemory() / clusterResources.getMemory(); - - fairResources = new ResourceInfo(queue.getFairShare()); + + steadyFairResources = new ResourceInfo(queue.getSteadyFairShare()); + dynamicFairResources = new ResourceInfo(queue.getFairShare()); minResources = new ResourceInfo(queue.getMinShare()); maxResources = new ResourceInfo(queue.getMaxShare()); maxResources = new ResourceInfo( Resources.componentwiseMin(queue.getMaxShare(), scheduler.getClusterResource())); - - fractionMemFairShare = (float)fairResources.getMemory() / clusterResources.getMemory(); + + fractionMemSteadyFairShare = + (float)steadyFairResources.getMemory() / clusterResources.getMemory(); + fractionMemDynamicFairShare = (float) dynamicFairResources.getMemory() + / clusterResources.getMemory(); fractionMemMinShare = (float)minResources.getMemory() / clusterResources.getMemory(); fractionMemMaxShare = (float)maxResources.getMemory() / clusterResources.getMemory(); @@ -101,19 +108,34 @@ public FairSchedulerQueueInfo(FSQueue queue, FairScheduler scheduler) { } /** - * Returns the fair share as a fraction of the entire cluster capacity. + * Returns the steady fair share as a fraction of the entire cluster capacity. */ - public float getFairShareMemoryFraction() { - return fractionMemFairShare; + public float getSteadyFairShareMemoryFraction() { + return fractionMemSteadyFairShare; } - + /** - * Returns the fair share of this queue in megabytes. + * Returns the dynamic fair share as a fraction of the entire cluster capacity. */ - public ResourceInfo getFairShare() { - return fairResources; + public float getDynamicFairShareMemoryFraction() { + return fractionMemDynamicFairShare; } - + + /** + * Returns the steady fair share of this queue in megabytes. + */ + public ResourceInfo getSteadyFairShare() { + return dynamicFairResources; + } + + /** + * Returns the dynamic fair share of this queue in megabytes + * @return + */ + public ResourceInfo getDynamicFairShare() { + return dynamicFairResources; + } + public ResourceInfo getMinResources() { return minResources; }