[ https://issues.apache.org/jira/browse/YARN-3542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15052108#comment-15052108 ]
Sidharta Seethana commented on YARN-3542: ----------------------------------------- hi [~vvasudev], thanks for the updated patch. Please see comments below. h4. CGroupsCpuResourceHandlerImpl.java {code} import org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler; import org.apache.hadoop.yarn.server.nodemanager.util.DefaultLCEResourcesHandler; import org.apache.hadoop.yarn.server.nodemanager.util.LCEResourcesHandler; {code} These are unused imports in CGroupsCpuResourceHandlerImpl {code} @VisibleForTesting static final String CPU_PERIOD_US = "cfs_period_us"; @VisibleForTesting static final String CPU_QUOTA_US = "cfs_quota_us"; @VisibleForTesting static final String CPU_SHARES = "shares”; {code} Move these to CGroupsHandler ? {code} int quotaUS = MAX_QUOTA_US; int periodUS = (int) (MAX_QUOTA_US / yarnProcessors); {code} About how shares/cfs_period_us/cfs_quota_us are used : additional comments/documentation and examples (as unit tests?) would be useful. It took me a while to trace through the code using some examples. h4. CGroupsLCEResourcesHandler.java Since the class has been marked deprecated, is it necessary to make the rest of the changes that are included ? h4. LinuxContainerExecutor.java {code} private LCEResourcesHandler getResourcesHandler(Configuration conf) { LCEResourcesHandler handler = ReflectionUtils.newInstance( conf.getClass(YarnConfiguration.NM_LINUX_CONTAINER_RESOURCES_HANDLER, DefaultLCEResourcesHandler.class, LCEResourcesHandler.class), conf); // Stop using CgroupsLCEResourcesHandler // use the resource handler chain instead // ResourceHandlerModule will create the cgroup cpu module if // CgroupsLCEResourcesHandler is set if (handler instanceof CgroupsLCEResourcesHandler) { handler = ReflectionUtils.newInstance(DefaultLCEResourcesHandler.class, conf); } handler.setConf(conf); return handler; } {code} Since all resource handling is now in the resource handler chain - there is no longer a need to have references to LCEResourcesHandler in LinuxContainerExeuctor - all related config handling etc should be in ResourceHandlerModule.java (which already seems to the case). IMO, all references to LCEResourcesHandler (and sub-classes) should be removed from LinuxContainerExecutor. > Re-factor support for CPU as a resource using the new ResourceHandler > mechanism > ------------------------------------------------------------------------------- > > Key: YARN-3542 > URL: https://issues.apache.org/jira/browse/YARN-3542 > Project: Hadoop YARN > Issue Type: Bug > Components: nodemanager > Reporter: Sidharta Seethana > Assignee: Sidharta Seethana > Priority: Critical > Attachments: YARN-3542.001.patch, YARN-3542.002.patch, > YARN-3542.003.patch > > > In YARN-3443 , a new ResourceHandler mechanism was added which enabled easier > addition of new resource types in the nodemanager (this was used for network > as a resource - See YARN-2140 ). We should refactor the existing CPU > implementation ( LinuxContainerExecutor/CgroupsLCEResourcesHandler ) using > the new ResourceHandler mechanism. -- This message was sent by Atlassian JIRA (v6.3.4#6332)