Uploaded image for project: 'Hadoop Map/Reduce'
  1. Hadoop Map/Reduce
  2. MAPREDUCE-5822

FairScheduler does not preempt due to fairshare-starvation when fairshare is 1

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.2.1
    • 1.3.0
    • scheduler
    • None
    • Reviewed

    Description

      If the fair share returned by the scheduler getFairShare() == 1 the pool will never be marked as being starved because of the following calculation:

      boolean isStarvedForFairShare(PoolSchedulable sched) { 
        int desiredFairShare = (int) Math.floor(Math.min( sched.getFairShare() / 2, sched.getDemand())); 
        return (sched.getRunningTasks() < desiredFairShare); 
      }
      

      getFairShare() returns 1
      Math.min calculation will return 0.5
      Math.Floor() which will cause the desiredFairShare to be set to 0.
      the return value to be 'false' (0 < 0)
      If you have a small job without a minimum set it will not get scheduled if a large job is hogging the slots.

      Attachments

        1. MAPREDUCE-5822.002.patch
          6 kB
          Anubhav Dhoot
        2. MAPREDUCE-5822.001.patch
          6 kB
          Anubhav Dhoot

        Activity

          People

            adhoot Anubhav Dhoot
            adhoot Anubhav Dhoot
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: