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

Eric Payne updated YARN-2056:
-----------------------------
    Attachment: YARN-2056.201409210049.txt

Hi [~leftnoteasy]. Thank you for spending the time to look at this patch and 
provide helpful suggestions.

{quote}
IMHO, the right place to put reserving resource logic for un-preemptable queue 
is not {{resetCapacity}}, it should in {{computeFixpointAllocation}}.
...
Does this make sense to you?
{quote}

Yes, that makes sense, and I think it is a simpler algorithm. I updated the 
patch, so please have a look.

I have made a conscious decision to only allow disable preemption at the leaf 
queue level. This is because there may be a use case where you want to disable 
preemption at the parent level, and have other queue hierarchies leave it 
alone, but then allow preemption between children of the disabled parent. So, 
rather than solve that problem with this fix, I only allow leaf queues to 
disable preemption. Even if a leaf queue could inherit it's parent's disable 
preemption value, there will likely be cases where part of the parent queue's 
over-capacity resources are untouchable and part of them are preemptable.

So, I adjusted your suggested algorithm somewhat. 

- I collected untouchableExtra instead of preemptableExtra at the TempQueue 
level. in {{computeFixpointAllocation}},
- I looped through each queue, and if one has any untouchableExtra, then the 
queue's {{idealAssigned = guaranteed + untouchableExtra}}
- In {{TempQueue#offer}}, one of the calculations is {{current + pending - 
idealAssigned}}. I had to take into consideration that if the queue has over 
capacity, some of it may be untouchable and some may be preemptable. If some of 
it is preemptable, then {{current}} could be greater than {{idealAssigned}}, 
and {{TempQueue#offer}} would end up assigning more to that queue than it 
should.


> Disable preemption at Queue level
> ---------------------------------
>
>                 Key: YARN-2056
>                 URL: https://issues.apache.org/jira/browse/YARN-2056
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: resourcemanager
>    Affects Versions: 2.4.0
>            Reporter: Mayank Bansal
>            Assignee: Eric Payne
>         Attachments: YARN-2056.201408202039.txt, YARN-2056.201408260128.txt, 
> YARN-2056.201408310117.txt, YARN-2056.201409022208.txt, 
> YARN-2056.201409181916.txt, YARN-2056.201409210049.txt
>
>
> We need to be able to disable preemption at individual queue level



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to