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

Daniel Templeton commented on YARN-6445:
----------------------------------------

Thanks for the patch, [~vvasudev].  A few comments:

* {{TestResources}}
** I don't see why we need the {{ExtendedResources}} class.  You don't use the 
{{none()}} method that I see, and I don't see where the {{unbounded()}} method 
is materially different from what's in {{Resources}}.
* {{DominantResourceCalculator}}
** You left in some commented-out code: {code}        // ResourceInformation 
resourceInformation = ResourceInformation
        //    .newInstance(numerator.getResourceInformation(resource));{code}
** I found this logic in {{divideAndCeil()}} to be surprisingly obtuse: {code}  
      ResourceInformation resourceInformation =
            ret.getResourceInformation(resource);
        ResourceInformation.copy(numerator.getResourceInformation(resource),
            resourceInformation);{code}  It would really help to add a comment 
that explains what's happening.
 ** You left in more commented-out code: {code}        // ResourceInformation 
tmp =
        //    ResourceInformation.newInstance(rResourceInformation);{code}
** You left in commented-out code: {code}        // tmp.setValue(value);
        ResourceInformation
            .copy(rResourceInformation, ret.getResourceInformation(resource));
        ret.getResourceInformation(resource).setValue(value);
        // ret.setResourceInformation(resource, tmp);{code}
* {{Resource}}
** In {{newInstance()}} you have this: {code}  public static Resource 
newInstance(Resource resource) {
    Resource ret = Resource.newInstance(0, 0);
    for (Map.Entry<String, ResourceInformation> entry : resource.getResources()
        .entrySet()) {
      try {
        ResourceInformation
            .copy(entry.getValue(), ret.getResourceInformation(entry.getKey()));
      } catch (YarnException ye) {
        ret.setResourceInformation(entry.getKey(),
            ResourceInformation.newInstance(entry.getValue()));
      }
    }
    return ret;
  }{code}  Since you know that {{ret}} only has CPU and memory, this code seems 
odd to me.  Maybe add a comment to be clear about what you're doing so no one's 
confused.
* {{ResourcePMImpl}}
** In {{getResources()}}, I don't see the reason to remove the unmodifiable 
wrapper.
* In general, I'm finding the idiom of getting the RI into a tmp object and 
then copying the RI from the source into the tmp RI to be obtuse.  Can you add 
a wrapper method that does the same thing but labels it with an obvious name?  
Or maybe just do what you do is some places: {code}        ResourceInformation
            .copy(rResourceInformation, 
ret.getResourceInformation(resource));{code}
* There are a lot of places where {{Resource.getResourceInformation()}} is 
called in context of a _try-catch_ that just wraps the exception in an 
{{IllegalArgumentException}} and rethrows it.  It's out of scope for this JIRA, 
but I think that's the wrong thing to do.  The correct approach is what you do 
in {{Resource.newInstance()}}, i.e. treat it like what it is: a missing 
resource, and move on.

> Improve YARN-3926 performance with respect to SLS
> -------------------------------------------------
>
>                 Key: YARN-6445
>                 URL: https://issues.apache.org/jira/browse/YARN-6445
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: nodemanager, resourcemanager
>            Reporter: Varun Vasudev
>            Assignee: Varun Vasudev
>         Attachments: YARN-6445-YARN-3926.001.patch, 
> YARN-6445-YARN-3926.002.patch
>
>
> As part of the SLS runs on YARN-3926, we discovered a bunch of bottlenecks 
> around object creation and garbage collection. This JIRA is to apply a fix 
> for those bottlenecks.



--
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