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) @@ -47,7 +47,10 @@ 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_UNDER_MIN_SHARE = "display:none"; + static final String Q_OVER_MIN_SHARE = "left:0%;top:-11%;background:none;border:2px solid rgba(0, 132, 180, 0.8)"; + static final String Q_AT_MAX_SHARE = "left:0%;top:-11%;background:none;border:2px solid rgba(204, 0, 0, 0.7)"; + @RequestScoped static class FSQInfo { FairSchedulerQueueInfo qinfo; @@ -74,7 +77,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 +99,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 borderColor = used < minShare || minShare == 0f ? Q_UNDER_MIN_SHARE : Q_OVER_MIN_SHARE; + borderColor = used >= maxShare ? Q_AT_MAX_SHARE : borderColor; LI> li = ul. li(). a(_Q).$style(width(capacity * Q_MAX_WIDTH)). @@ -106,6 +113,9 @@ span().$style(join(width(used/capacity), ";font-size:1px;left:0%;", used > fairShare ? Q_OVER : Q_UNDER)). _('.')._(). + span().$style(join(width(minShare/capacity), + ";font-size:1px;left:0%;", borderColor)). + _('.')._(). span(".q", info.getQueueName())._(). span().$class("qstats").$style(left(Q_STATS_POS)). _(join(percent(used), " used"))._(); @@ -161,13 +171,17 @@ _("Used")._(). span().$class("qlegend ui-corner-all").$style(Q_OVER). _("Used (over fair share)")._(). + 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"))._().