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

Yufei Gu commented on YARN-6299:
--------------------------------

In the case, assigning resource to the one with fewer usage seems reasonable, 
and the min share ratio can guarantee that if both demands are under min share. 
I've thought about another case, one demand is less than min share and the 
other is greater. Assume the min share is 10G.
{code}
demand1 = 5
demand2 = 12
resourceUsage1 = 4
resourceUsage2 = 7
minShare1 = 5
minShare2 = 10 
s1Needy = true (4 < 5)
s2Needy = true (7 < 10)
minshareRatio1 = 0.8
minshareRatio2 = 0.7
{code}
We prefer app2 since minshareRatio2 < minshareRatio2, but if we don't do 
{{min(demand, minShare)}}, then minshareRatios will be:
{code}
minshareRatio1 = 4/10 = 0.4 
minshareRatio2 = 7/10 = 0.7
{code}
Seems like we could prefer app1.

> FairSharePolicy is incorrect when demand is less than min share
> ---------------------------------------------------------------
>
>                 Key: YARN-6299
>                 URL: https://issues.apache.org/jira/browse/YARN-6299
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: fairscheduler
>    Affects Versions: 3.0.0-alpha2
>            Reporter: Daniel Templeton
>
> {code}
>       Resource resourceUsage1 = s1.getResourceUsage();
>       Resource resourceUsage2 = s2.getResourceUsage();
>       Resource minShare1 = Resources.min(RESOURCE_CALCULATOR, null,
>           s1.getMinShare(), s1.getDemand());
>       Resource minShare2 = Resources.min(RESOURCE_CALCULATOR, null,
>           s2.getMinShare(), s2.getDemand());
>       boolean s1Needy = Resources.lessThan(RESOURCE_CALCULATOR, null,
>           resourceUsage1, minShare1);
>       boolean s2Needy = Resources.lessThan(RESOURCE_CALCULATOR, null,
>           resourceUsage2, minShare2);
>       minShareRatio1 = (double) resourceUsage1.getMemorySize()
>           / Resources.max(RESOURCE_CALCULATOR, null, minShare1, 
> ONE).getMemorySize();
>       minShareRatio2 = (double) resourceUsage2.getMemorySize()
>           / Resources.max(RESOURCE_CALCULATOR, null, minShare2, 
> ONE).getMemorySize();
> {code}
> If demand is less than min share, then an app will be flagged as needy if it 
> has demand that is higher than its usage, which happens any time the app has 
> been assigned resources that it hasn't started using yet.  That sounds wrong 
> to me.  [~kasha], [~yufeigu]?



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to