Uploaded image for project: 'Hadoop YARN'
  1. Hadoop YARN
  2. YARN-1961

Fair scheduler preemption doesn't work for non-leaf queues

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • 2.4.0
    • None
    • fairscheduler, scheduler

    Description

      Setting minResources and minSharePreemptionTimeout to a non-leaf queue doesn't cause preemption to happen when that non-leaf queue is below minResources and there are outstanding demands in that non-leaf queue.
      Here is an example fs allocation config(partial) :

      <queue name="abc">
        <minResources>3072 mb,0 vcores</minResources>
        <minSharePreemptionTimeout>30</minSharePreemptionTimeout>
          <queue name="childabc1">
          </queue>
          <queue name="childabc2">
          </queue>
       </queue>
       

      With the above configs,preemption doesn't seem to happen if queue abc is below minShare and it has outstanding unsatisfied demands from apps in its child queues. Ideally in such cases we would like preemption to kick off and reclaim resources from other queues(not under queue abc).

      Looking at the code it seems like preemption checks for starvation only at the leaf queue level and not at the parent level.

      FairScheduler.java
      boolean isStarvedForMinShare(FSLeafQueue sched)
      boolean isStarvedForFairShare(FSLeafQueue sched)
      

      This affects our use case where we have a parent queue with probably a 100 unconfigured leaf queues under it.We want to give a minshare to the parent queue to protect all the leaf queues under it,but we cannot do it due to this bug.

      Attachments

        Activity

          People

            ashwinshankar77 Ashwin Shankar
            ashwinshankar77 Ashwin Shankar
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: