Index: 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 (revision 1599314) +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/FairSchedulerPage.java (working copy) @@ -45,8 +45,9 @@ 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_OVER = "background:rgba(255, 140, 0, 0.8)"; - static final String Q_UNDER = "background:rgba(50, 205, 50, 0.8)"; + static final String Q_OVER_MIN_SHARE = "background:rgba(255, 140, 0, 0.8)"; + static final String Q_AT_MAX_SHARE = "background:rgba(204, 0, 0, 0.7)"; + static final String Q_UNDER_MIN_SHARE = "background:rgba(50, 205, 50, 0.8)"; @RequestScoped static class FSQInfo { @@ -74,7 +75,7 @@ ri._("Max Running Applications:", qinfo.getMaxApplications()); } ri._("Fair Share:", qinfo.getFairShare().toString()); - + html._(InfoBlock.class); // clear the info contents so this queue's info doesn't accumulate into another queue's info @@ -96,7 +97,11 @@ for (FairSchedulerQueueInfo info : subQueues) { float capacity = info.getMaxResourcesFraction(); float fairShare = info.getFairShareMemoryFraction(); + float minShare = info.getMinShareMemoryFraction(); + float maxShare = info.getMaxResourcesFraction(); float used = info.getUsedMemoryFraction(); + String color = used > minShare ? Q_OVER_MIN_SHARE : Q_UNDER_MIN_SHARE; + color = used >= maxShare ? Q_AT_MAX_SHARE : color; LI> li = ul. li(). a(_Q).$style(width(capacity * Q_MAX_WIDTH)). @@ -104,7 +109,7 @@ span().$style(join(Q_GIVEN, ";font-size:1px;", width(fairShare/capacity))). _('.')._(). span().$style(join(width(used/capacity), - ";font-size:1px;left:0%;", used > fairShare ? Q_OVER : Q_UNDER)). + ";font-size:1px;left:0%;", color)). _('.')._(). span(".q", info.getQueueName())._(). span().$class("qstats").$style(left(Q_STATS_POS)). @@ -157,17 +162,19 @@ span().$style("font-weight: bold")._("Legend:")._(). span().$class("qlegend ui-corner-all").$style(Q_GIVEN). _("Fair Share")._(). - span().$class("qlegend ui-corner-all").$style(Q_UNDER). - _("Used")._(). - span().$class("qlegend ui-corner-all").$style(Q_OVER). - _("Used (over fair share)")._(). + span().$class("qlegend ui-corner-all").$style(Q_UNDER_MIN_SHARE). + _("Under MinShare")._(). + span().$class("qlegend ui-corner-all").$style(Q_OVER_MIN_SHARE). + _("Over MinShare")._(). + span().$class("qlegend ui-corner-all").$style(Q_AT_MAX_SHARE). + _("At MaxShare")._(). span().$class("qlegend ui-corner-all ui-state-default"). _("Max Capacity")._(). _(). li(). a(_Q).$style(width(Q_MAX_WIDTH)). span().$style(join(width(used), ";left:0%;", - used > 1 ? Q_OVER : Q_UNDER))._(".")._(). + used >= 1 ? Q_AT_MAX_SHARE : Q_UNDER_MIN_SHARE))._(".")._(). span(".q", "root")._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._().