You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Karthik Kambatla (JIRA)" <ji...@apache.org> on 2014/04/11 23:52:17 UTC

[jira] [Updated] (MAPREDUCE-5822) FairScheduler preemption due to fairshare-starvation not work when fairShare == 1

     [ https://issues.apache.org/jira/browse/MAPREDUCE-5822?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthik Kambatla updated MAPREDUCE-5822:
----------------------------------------

    Summary: FairScheduler preemption due to fairshare-starvation  not work when fairShare == 1  (was: FairScheduler isStartvedForFairShare does not work when fairShare == 1)

> FairScheduler preemption due to fairshare-starvation  not work when fairShare == 1
> ----------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-5822
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5822
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: scheduler
>    Affects Versions: 1.2.1
>            Reporter: Anubhav Dhoot
>            Assignee: Anubhav Dhoot
>         Attachments: MAPREDUCE-5822.001.patch, MAPREDUCE-5822.002.patch
>
>
> If the fair share returned by the scheduler getFairShare() == 1 the pool will never be marked as being starved because of the following calculation:
> {code}
> boolean isStarvedForFairShare(PoolSchedulable sched) { 
>   int desiredFairShare = (int) Math.floor(Math.min( sched.getFairShare() / 2, sched.getDemand())); 
>   return (sched.getRunningTasks() < desiredFairShare); 
> }
> {code}
> 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.



--
This message was sent by Atlassian JIRA
(v6.2#6252)