[ 
https://issues.apache.org/jira/browse/YARN-2933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14253068#comment-14253068
 ] 

Wangda Tan commented on YARN-2933:
----------------------------------

Hi [~mayank_bansal],
Thanks for working on this,

I think ideal_allocation need to be updated as well, since now we only consider 
capacity without labels. We need compute ideal_allocation only in nodes without 
labels. More specifically, in {{cloneQueues}}:

{code}
      Resource current = Resources.multiply(clusterResources, absUsed);
      Resource guaranteed = Resources.multiply(clusterResources, absCap);
      Resource maxCapacity = Resources.multiply(clusterResources, absMaxCap);
{code}

Should use totalResourceWIthoutLabel instead of clusterResource here. You can 
use {{RMNodeLabelsManager.getResourceByLabel(CommonNodeLabelsManager.NO_LABEL, 
clusterResource)}} to get totalResourceWithoutLabel.

I think a simple way to do this might be overwrite clusterResource in 
editSchedule, make it to:
{code}
  @Override
  public void editSchedule(){
    CSQueue root = scheduler.getRootQueue();
    Resource clusterResources =
-      Resources.clone(scheduler.getClusterResource());
+    RMNodeLabelsManager.getResourceByLabel(...)
    containerBasedPreemptOrKill(root, clusterResources);
  }
{code}

Does this make sense to you?

> Capacity Scheduler preemption policy should only consider capacity without 
> labels temporarily
> ---------------------------------------------------------------------------------------------
>
>                 Key: YARN-2933
>                 URL: https://issues.apache.org/jira/browse/YARN-2933
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: capacityscheduler
>            Reporter: Wangda Tan
>            Assignee: Mayank Bansal
>         Attachments: YARN-2933-1.patch
>
>
> Currently, we have capacity enforcement on each queue for each label in 
> CapacityScheduler, but we don't have preemption policy to support that. 
> YARN-2498 is targeting to support preemption respect node labels, but we have 
> some gaps in code base, like queues/FiCaScheduler should be able to get 
> usedResource/pendingResource, etc. by label. These items potentially need to 
> refactor CS which we need spend some time carefully think about.
> For now, what immediately we can do is allow calculate ideal_allocation and 
> preempt containers only for resources on nodes without labels, to avoid 
> regression like: A cluster has some nodes with labels and some not, assume 
> queueA isn't satisfied for resource without label, but for now, preemption 
> policy may preempt resource from nodes with labels for queueA, that is not 
> correct.
> Again, it is just a short-term enhancement, YARN-2498 will consider 
> preemption respecting node-labels for Capacity Scheduler which is our final 
> target. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to