[ 
https://issues.apache.org/jira/browse/MAPREDUCE-2162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12965936#action_12965936
 ] 

Joydeep Sen Sarma commented on MAPREDUCE-2162:
----------------------------------------------

here's the reasoning behind capping stddev at mean/3. we speculate if:
* rate < mean - stddev

implies
* 1/rate > 1/(mean - stddev)

implies
* 1/rate > 1/mean + (1/(mean - stddev) - 1/mean)

implies
# projectedTime > meanTime + Delta

where
* Delta = (1/(mean - stddev) - 1/mean)

if
* stddev <= mean/3 // for example

then
* Delta > (1/(mean - mean/3) - 1/mean) ==>
* Delta > 0.5/mean = 0.5 * MeanTime

now our our equation _1_ becomes:
# projectedTime > MeanTime + 0.5*MeanTime

two observations:

* by capping stddev - we have converted the rate check into a meaningful check 
on the running time of a task - tasks that run longer than a certain time 
(relative to the mean) will be guaranteed to be speculated.
* the Meantime + 0.5*Meantime slack over the mean is same as the heuristic 
discussed in the jira where two rules were discussed:
** dont speculate if runningTime <= MeanTime * 0.5
** dont speculate if remainingTime < MeanTime
* if we add these two together - since runningTime + remainingTime == 
projectedTime - this becomes (roughly): 
** speculate only if projectedTime > MeanTime + MeanTime*0.5

so the heuristics in the jira are structurally similar to capping the stddev at 
mean/3.

as explained earlier - the percentile stuff is actually (approximately) being 
done by speculativeCap (no more than 10% of the tasks can be speculated and 
tasks are sorted (by latest finish time) before speculating).

> speculative execution does not handle cases where stddev > mean well
> --------------------------------------------------------------------
>
>                 Key: MAPREDUCE-2162
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-2162
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>            Reporter: Joydeep Sen Sarma
>            Assignee: Joydeep Sen Sarma
>
> the new speculation code only speculates tasks whose progress rate deviates 
> from the mean progress rate of a job by more than some multiple (typically 
> 1.0) of stddev. stddev can be larger than mean. which means that if we ever 
> get into a situation where this condition holds true - then a task with even 
> 0 progress rate will not be speculated.
> it's not clear that this condition is self-correcting. if a job has thousands 
> of tasks - then one laggard task, inspite of not being speculated for a long 
> time, may not be able to fix the condition of stddev > mean.
> we have seen jobs where tasks have not been speculated for hours and this 
> seems one explanation why this may have happened. here's an example job with 
> stddev > mean:
> DataStatistics: count is 6, sum is 1.7141054797775723E-8, sumSquares is 
> 2.9381575958035014E-16 mean is 2.8568424662959537E-9 std() is 
> 6.388093955645905E-9

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to