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

ASF GitHub Bot commented on YARN-5829:
--------------------------------------

Github user kambatla commented on a diff in the pull request:

    https://github.com/apache/hadoop/pull/201#discussion_r108023320
  
    --- Diff: 
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFSSchedulerNode.java
 ---
    @@ -0,0 +1,376 @@
    +package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair;
    +
    +import org.apache.hadoop.yarn.api.records.*;
    +import 
org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
    +import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
    +import org.apache.hadoop.yarn.util.resource.Resources;
    +import org.junit.Test;
    +import org.mockito.invocation.InvocationOnMock;
    +import org.mockito.stubbing.Answer;
    +
    +import java.util.ArrayList;
    +import java.util.Collections;
    +import java.util.Map;
    +
    +import static org.junit.Assert.assertEquals;
    +import static org.junit.Assert.assertNotEquals;
    +import static org.junit.Assert.assertTrue;
    +import static org.mockito.Mockito.mock;
    +import static org.mockito.Mockito.when;
    +
    +/**
    + * Test scheduler node, especially preemption reservations.
    + */
    +public class TestFSSchedulerNode {
    +  private long containerNum = 0;
    +  private ArrayList<RMContainer> containers = new ArrayList<>();
    +
    +  private RMNode createNode() {
    +    RMNode node = mock(RMNode.class);
    +    when(node.getTotalCapability()).thenReturn(Resource.newInstance(8192, 
8));
    +    when(node.getHostName()).thenReturn("host.domain.com");
    +    return node;
    +  }
    +
    +  private RMContainer createDefaultContainer() {
    +    return createContainer(Resource.newInstance(1024, 1), null);
    +  }
    +
    +  private RMContainer createContainer(
    +      Resource request, ApplicationAttemptId appAttemptId) {
    +    RMContainer container = mock(RMContainer.class);
    +    Container containerInner = mock(Container.class);
    +    ContainerId id = mock(ContainerId.class);
    +    when(id.getContainerId()).thenReturn(containerNum);
    +    when(containerInner.getResource()).
    +        thenReturn(Resources.clone(request));
    +    when(containerInner.getId()).thenReturn(id);
    +    when(containerInner.getExecutionType()).
    +        thenReturn(ExecutionType.GUARANTEED);
    +    when(container.getApplicationAttemptId()).thenReturn(appAttemptId);
    +    when(container.getContainerId()).thenReturn(id);
    +    when(container.getContainer()).thenReturn(containerInner);
    +    
when(container.getExecutionType()).thenReturn(ExecutionType.GUARANTEED);
    +    when(container.getAllocatedResource()).
    +        thenReturn(Resources.clone(request));
    +    containers.add(container);
    +    containerNum++;
    +    return container;
    +  }
    +
    +  private void saturateCluster(FSSchedulerNode schedulerNode) {
    +    while (!Resources.isNone(schedulerNode.getUnallocatedResource())) {
    +      createDefaultContainer();
    +      schedulerNode.allocateContainer(containers.get((int)containerNum - 
1));
    --- End diff --
    
    You don't need to typecast if you change it to int. 


> FS preemption should reserve a node before considering containers on it for 
> preemption
> --------------------------------------------------------------------------------------
>
>                 Key: YARN-5829
>                 URL: https://issues.apache.org/jira/browse/YARN-5829
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: fairscheduler
>            Reporter: Karthik Kambatla
>            Assignee: Miklos Szegedi
>
> FS preemption evaluates nodes for preemption, and subsequently preempts 
> identified containers. If this node is not reserved for a specific 
> application, any other application could be allocated resources on this node. 
> Reserving the node for the starved application before preempting containers 
> would help avoid this.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to