http://git-wip-us.apache.org/repos/asf/hadoop/blob/15319c79/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/TestResourcePluginManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/TestResourcePluginManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/TestResourcePluginManager.java new file mode 100644 index 0000000..bcadf76 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/TestResourcePluginManager.java @@ -0,0 +1,261 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.service.ServiceOperations; +import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.api.records.Resource; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor; +import org.apache.hadoop.yarn.server.nodemanager.Context; +import org.apache.hadoop.yarn.server.nodemanager.DeletionService; +import org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor; +import org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService; +import org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService; +import org.apache.hadoop.yarn.server.nodemanager.NodeManager; +import org.apache.hadoop.yarn.server.nodemanager.NodeManagerTestBase; +import org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdater; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperation; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.privileged.PrivilegedOperationExecutor; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.CGroupsHandler; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandler; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerChain; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerException; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.NodeResourceUpdaterPlugin; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.ResourcePlugin; +import org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.ResourcePluginManager; +import org.apache.hadoop.yarn.server.security.ApplicationACLsManager; +import org.junit.After; +import org.junit.Assert; +import org.junit.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class TestResourcePluginManager extends NodeManagerTestBase { + private NodeManager nm; + + ResourcePluginManager stubResourcePluginmanager() { + // Stub ResourcePluginManager + final ResourcePluginManager rpm = mock(ResourcePluginManager.class); + Map<String, ResourcePlugin> plugins = new HashMap<>(); + + // First resource plugin + ResourcePlugin resourcePlugin = mock(ResourcePlugin.class); + NodeResourceUpdaterPlugin nodeResourceUpdaterPlugin = mock( + NodeResourceUpdaterPlugin.class); + when(resourcePlugin.getNodeResourceHandlerInstance()).thenReturn( + nodeResourceUpdaterPlugin); + plugins.put("resource1", resourcePlugin); + + // Second resource plugin + resourcePlugin = mock(ResourcePlugin.class); + when(resourcePlugin.createResourceHandler(any(Context.class), any( + CGroupsHandler.class), any(PrivilegedOperationExecutor.class))) + .thenReturn(new CustomizedResourceHandler()); + plugins.put("resource2", resourcePlugin); + when(rpm.getNameToPlugins()).thenReturn(plugins); + return rpm; + } + + @After + public void tearDown() { + if (nm != null) { + try { + ServiceOperations.stop(nm); + } catch (Throwable t) { + // ignore + } + } + } + + private class CustomizedResourceHandler implements ResourceHandler { + + @Override + public List<PrivilegedOperation> bootstrap(Configuration configuration) + throws ResourceHandlerException { + return null; + } + + @Override + public List<PrivilegedOperation> preStart(Container container) + throws ResourceHandlerException { + return null; + } + + @Override + public List<PrivilegedOperation> reacquireContainer(ContainerId containerId) + throws ResourceHandlerException { + return null; + } + + @Override + public List<PrivilegedOperation> postComplete(ContainerId containerId) + throws ResourceHandlerException { + return null; + } + + @Override + public List<PrivilegedOperation> teardown() + throws ResourceHandlerException { + return null; + } + } + + private class MyMockNM extends NodeManager { + private final ResourcePluginManager rpm; + + public MyMockNM(ResourcePluginManager rpm) { + this.rpm = rpm; + } + + @Override + protected NodeStatusUpdater createNodeStatusUpdater(Context context, + Dispatcher dispatcher, NodeHealthCheckerService healthChecker) { + ((NodeManager.NMContext)context).setResourcePluginManager(rpm); + return new BaseNodeStatusUpdaterForTest(context, dispatcher, healthChecker, + metrics, new BaseResourceTrackerForTest()); + } + + @Override + protected ContainerManagerImpl createContainerManager(Context context, + ContainerExecutor exec, DeletionService del, + NodeStatusUpdater nodeStatusUpdater, + ApplicationACLsManager aclsManager, + LocalDirsHandlerService diskhandler) { + return new MyContainerManager(context, exec, del, nodeStatusUpdater, + metrics, diskhandler); + } + + @Override + protected ResourcePluginManager createResourcePluginManager() { + return rpm; + } + } + + public class MyLCE extends LinuxContainerExecutor { + private PrivilegedOperationExecutor poe = mock(PrivilegedOperationExecutor.class); + + @Override + protected PrivilegedOperationExecutor getPrivilegedOperationExecutor() { + return poe; + } + } + + /* + * Make sure ResourcePluginManager is initialized during NM start up. + */ + @Test(timeout = 30000) + public void testResourcePluginManagerInitialization() throws Exception { + final ResourcePluginManager rpm = stubResourcePluginmanager(); + nm = new MyMockNM(rpm); + + YarnConfiguration conf = createNMConfig(); + nm.init(conf); + verify(rpm, times(1)).initialize( + any(Context.class)); + } + + /* + * Make sure ResourcePluginManager is invoked during NM update. + */ + @Test(timeout = 30000) + public void testNodeStatusUpdaterWithResourcePluginsEnabled() throws Exception { + final ResourcePluginManager rpm = stubResourcePluginmanager(); + + nm = new MyMockNM(rpm); + + YarnConfiguration conf = createNMConfig(); + nm.init(conf); + nm.start(); + + NodeResourceUpdaterPlugin nodeResourceUpdaterPlugin = + rpm.getNameToPlugins().get("resource1") + .getNodeResourceHandlerInstance(); + + verify(nodeResourceUpdaterPlugin, times(1)).updateConfiguredResource( + any(Resource.class)); + } + + /* + * Make sure ResourcePluginManager is used to initialize ResourceHandlerChain + */ + @Test(timeout = 30000) + public void testLinuxContainerExecutorWithResourcePluginsEnabled() throws Exception { + final ResourcePluginManager rpm = stubResourcePluginmanager(); + final LinuxContainerExecutor lce = new MyLCE(); + + nm = new NodeManager() { + @Override + protected NodeStatusUpdater createNodeStatusUpdater(Context context, + Dispatcher dispatcher, NodeHealthCheckerService healthChecker) { + ((NMContext)context).setResourcePluginManager(rpm); + return new BaseNodeStatusUpdaterForTest(context, dispatcher, healthChecker, + metrics, new BaseResourceTrackerForTest()); + } + + @Override + protected ContainerManagerImpl createContainerManager(Context context, + ContainerExecutor exec, DeletionService del, + NodeStatusUpdater nodeStatusUpdater, + ApplicationACLsManager aclsManager, + LocalDirsHandlerService diskhandler) { + return new MyContainerManager(context, exec, del, nodeStatusUpdater, + metrics, diskhandler); + } + + @Override + protected ContainerExecutor createContainerExecutor(Configuration conf) { + ((NMContext)this.getNMContext()).setResourcePluginManager(rpm); + lce.setConf(conf); + return lce; + } + }; + + YarnConfiguration conf = createNMConfig(); + + nm.init(conf); + nm.start(); + + ResourceHandler handler = lce.getResourceHandler(); + Assert.assertNotNull(handler); + Assert.assertTrue(handler instanceof ResourceHandlerChain); + + boolean newHandlerAdded = false; + for (ResourceHandler h : ((ResourceHandlerChain) handler) + .getResourceHandlerList()) { + if (h instanceof CustomizedResourceHandler) { + newHandlerAdded = true; + break; + } + } + Assert.assertTrue("New ResourceHandler should be added", newHandlerAdded); + } +}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/15319c79/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/gpu/TestGpuDiscoverer.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/gpu/TestGpuDiscoverer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/gpu/TestGpuDiscoverer.java new file mode 100644 index 0000000..83bace2 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/resourceplugin/gpu/TestGpuDiscoverer.java @@ -0,0 +1,123 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.gpu; + +import org.apache.commons.io.FileUtils; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.server.nodemanager.webapp.dao.gpu.GpuDeviceInformation; +import org.junit.Assert; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +public class TestGpuDiscoverer { + private String getTestParentFolder() { + File f = new File("target/temp/" + TestGpuDiscoverer.class.getName()); + return f.getAbsolutePath(); + } + + private void touchFile(File f) throws IOException { + new FileOutputStream(f).close(); + } + + @Before + public void before() throws IOException { + String folder = getTestParentFolder(); + File f = new File(folder); + FileUtils.deleteDirectory(f); + f.mkdirs(); + } + + @Test + public void testLinuxGpuResourceDiscoverPluginConfig() throws Exception { + // Only run this on demand. + Assume.assumeTrue(Boolean.valueOf( + System.getProperty("RunLinuxGpuResourceDiscoverPluginConfigTest"))); + + // test case 1, check default setting. + Configuration conf = new Configuration(false); + GpuDiscoverer plugin = new GpuDiscoverer(); + plugin.initialize(conf); + Assert.assertEquals(GpuDiscoverer.DEFAULT_BINARY_NAME, + plugin.getPathOfGpuBinary()); + Assert.assertNotNull(plugin.getEnvironmentToRunCommand().get("PATH")); + Assert.assertTrue( + plugin.getEnvironmentToRunCommand().get("PATH").contains("nvidia")); + + // test case 2, check mandatory set path. + File fakeBinary = new File(getTestParentFolder(), + GpuDiscoverer.DEFAULT_BINARY_NAME); + touchFile(fakeBinary); + conf.set(YarnConfiguration.NM_GPU_PATH_TO_EXEC, getTestParentFolder()); + plugin = new GpuDiscoverer(); + plugin.initialize(conf); + Assert.assertEquals(fakeBinary.getAbsolutePath(), + plugin.getPathOfGpuBinary()); + Assert.assertNull(plugin.getEnvironmentToRunCommand().get("PATH")); + + // test case 3, check mandatory set path, but binary doesn't exist so default + // path will be used. + fakeBinary.delete(); + plugin = new GpuDiscoverer(); + plugin.initialize(conf); + Assert.assertEquals(GpuDiscoverer.DEFAULT_BINARY_NAME, + plugin.getPathOfGpuBinary()); + Assert.assertTrue( + plugin.getEnvironmentToRunCommand().get("PATH").contains("nvidia")); + } + + @Test + public void testGpuDiscover() throws YarnException { + // Since this is more of a performance unit test, only run if + // RunUserLimitThroughput is set (-DRunUserLimitThroughput=true) + Assume.assumeTrue( + Boolean.valueOf(System.getProperty("runGpuDiscoverUnitTest"))); + Configuration conf = new Configuration(false); + GpuDiscoverer plugin = new GpuDiscoverer(); + plugin.initialize(conf); + GpuDeviceInformation info = plugin.getGpuDeviceInformation(); + + Assert.assertTrue(info.getGpus().size() > 0); + Assert.assertEquals(plugin.getMinorNumbersOfGpusUsableByYarn().size(), + info.getGpus().size()); + } + + @Test + public void getNumberOfUsableGpusFromConfig() throws YarnException { + Configuration conf = new Configuration(false); + conf.set(YarnConfiguration.NM_GPU_ALLOWED_DEVICES, "0,1,2,4"); + GpuDiscoverer plugin = new GpuDiscoverer(); + plugin.initialize(conf); + + List<Integer> minorNumbers = plugin.getMinorNumbersOfGpusUsableByYarn(); + Assert.assertEquals(4, minorNumbers.size()); + + Assert.assertTrue(0 == minorNumbers.get(0)); + Assert.assertTrue(1 == minorNumbers.get(1)); + Assert.assertTrue(2 == minorNumbers.get(2)); + Assert.assertTrue(4 == minorNumbers.get(3)); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/15319c79/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/dao/gpu/TestGpuDeviceInformationParser.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/dao/gpu/TestGpuDeviceInformationParser.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/dao/gpu/TestGpuDeviceInformationParser.java new file mode 100644 index 0000000..e22597d --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/dao/gpu/TestGpuDeviceInformationParser.java @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.nodemanager.webapp.dao.gpu; + +import org.apache.commons.io.FileUtils; +import org.apache.hadoop.yarn.exceptions.YarnException; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +public class TestGpuDeviceInformationParser { + @Test + public void testParse() throws IOException, YarnException { + File f = new File("src/test/resources/nvidia-smi-sample-xml-output"); + String s = FileUtils.readFileToString(f, "UTF-8"); + + GpuDeviceInformationParser parser = new GpuDeviceInformationParser(); + + GpuDeviceInformation info = parser.parseXml(s); + Assert.assertEquals("375.66", info.getDriverVersion()); + Assert.assertEquals(2, info.getGpus().size()); + PerGpuDeviceInformation gpu1 = info.getGpus().get(1); + Assert.assertEquals("Tesla P100-PCIE-12GB", gpu1.getProductName()); + Assert.assertEquals(16384, gpu1.getGpuMemoryUsage().getTotalMemoryMiB()); + Assert.assertEquals(10.3f, + gpu1.getGpuUtilizations().getOverallGpuUtilization(), 1e-6); + Assert.assertEquals(34f, gpu1.getTemperature().getCurrentGpuTemp(), 1e-6); + Assert.assertEquals(85f, gpu1.getTemperature().getMaxGpuTemp(), 1e-6); + Assert.assertEquals(82f, gpu1.getTemperature().getSlowThresholdGpuTemp(), + 1e-6); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/15319c79/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/resources/nvidia-smi-sample-xml-output ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/resources/nvidia-smi-sample-xml-output b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/resources/nvidia-smi-sample-xml-output new file mode 100644 index 0000000..5ccb722 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/resources/nvidia-smi-sample-xml-output @@ -0,0 +1,547 @@ +<?xml version="1.0" ?> +<!DOCTYPE nvidia_smi_log SYSTEM "nvsmi_device_v8.dtd"> + +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<nvidia_smi_log> + <timestamp>Wed Sep 6 21:52:51 2017</timestamp> + <driver_version>375.66</driver_version> + <attached_gpus>2</attached_gpus> + <gpu id="0000:04:00.0"> + <product_name>Tesla P100-PCIE-12GB</product_name> + <product_brand>Tesla</product_brand> + <display_mode>Disabled</display_mode> + <display_active>Disabled</display_active> + <persistence_mode>Disabled</persistence_mode> + <accounting_mode>Disabled</accounting_mode> + <accounting_mode_buffer_size>1920</accounting_mode_buffer_size> + <driver_model> + <current_dm>N/A</current_dm> + <pending_dm>N/A</pending_dm> + </driver_model> + <serial>0320717030197</serial> + <uuid>GPU-28604e81-21ec-cc48-6759-bf2648b22e16</uuid> + <minor_number>0</minor_number> + <vbios_version>86.00.3A.00.02</vbios_version> + <multigpu_board>No</multigpu_board> + <board_id>0x400</board_id> + <gpu_part_number>900-2H400-0110-030</gpu_part_number> + <inforom_version> + <img_version>H400.0202.00.01</img_version> + <oem_object>1.1</oem_object> + <ecc_object>4.1</ecc_object> + <pwr_object>N/A</pwr_object> + </inforom_version> + <gpu_operation_mode> + <current_gom>N/A</current_gom> + <pending_gom>N/A</pending_gom> + </gpu_operation_mode> + <gpu_virtualization_mode> + <virtualization_mode>None</virtualization_mode> + </gpu_virtualization_mode> + <pci> + <pci_bus>04</pci_bus> + <pci_device>00</pci_device> + <pci_domain>0000</pci_domain> + <pci_device_id>15F710DE</pci_device_id> + <pci_bus_id>0000:04:00.0</pci_bus_id> + <pci_sub_system_id>11DA10DE</pci_sub_system_id> + <pci_gpu_link_info> + <pcie_gen> + <max_link_gen>3</max_link_gen> + <current_link_gen>3</current_link_gen> + </pcie_gen> + <link_widths> + <max_link_width>16x</max_link_width> + <current_link_width>16x</current_link_width> + </link_widths> + </pci_gpu_link_info> + <pci_bridge_chip> + <bridge_chip_type>N/A</bridge_chip_type> + <bridge_chip_fw>N/A</bridge_chip_fw> + </pci_bridge_chip> + <replay_counter>0</replay_counter> + <tx_util>0 KB/s</tx_util> + <rx_util>0 KB/s</rx_util> + </pci> + <fan_speed>N/A</fan_speed> + <performance_state>P0</performance_state> + <clocks_throttle_reasons> + <clocks_throttle_reason_gpu_idle>Active</clocks_throttle_reason_gpu_idle> + <clocks_throttle_reason_applications_clocks_setting>Not Active</clocks_throttle_reason_applications_clocks_setting> + <clocks_throttle_reason_sw_power_cap>Not Active</clocks_throttle_reason_sw_power_cap> + <clocks_throttle_reason_hw_slowdown>Not Active</clocks_throttle_reason_hw_slowdown> + <clocks_throttle_reason_sync_boost>Not Active</clocks_throttle_reason_sync_boost> + <clocks_throttle_reason_unknown>Not Active</clocks_throttle_reason_unknown> + </clocks_throttle_reasons> + <fb_memory_usage> + <total>12193 MiB</total> + <used>0 MiB</used> + <free>12193 MiB</free> + </fb_memory_usage> + <bar1_memory_usage> + <total>16384 MiB</total> + <used>2 MiB</used> + <free>16382 MiB</free> + </bar1_memory_usage> + <compute_mode>Default</compute_mode> + <utilization> + <gpu_util>0 %</gpu_util> + <memory_util>0 %</memory_util> + <encoder_util>0 %</encoder_util> + <decoder_util>0 %</decoder_util> + </utilization> + <encoder_stats> + <session_count>0</session_count> + <average_fps>0</average_fps> + <average_latency>0 ms</average_latency> + </encoder_stats> + <ecc_mode> + <current_ecc>Enabled</current_ecc> + <pending_ecc>Enabled</pending_ecc> + </ecc_mode> + <ecc_errors> + <volatile> + <single_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </single_bit> + <double_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </double_bit> + </volatile> + <aggregate> + <single_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </single_bit> + <double_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </double_bit> + </aggregate> + </ecc_errors> + <retired_pages> + <multiple_single_bit_retirement> + <retired_count>0</retired_count> + <retired_page_addresses> + </retired_page_addresses> + </multiple_single_bit_retirement> + <double_bit_retirement> + <retired_count>0</retired_count> + <retired_page_addresses> + </retired_page_addresses> + </double_bit_retirement> + <pending_retirement>No</pending_retirement> + </retired_pages> + <temperature> + <gpu_temp>31 C</gpu_temp> + <gpu_temp_max_threshold>85 C</gpu_temp_max_threshold> + <gpu_temp_slow_threshold>82 C</gpu_temp_slow_threshold> + </temperature> + <power_readings> + <power_state>P0</power_state> + <power_management>Supported</power_management> + <power_draw>24.84 W</power_draw> + <power_limit>250.00 W</power_limit> + <default_power_limit>250.00 W</default_power_limit> + <enforced_power_limit>250.00 W</enforced_power_limit> + <min_power_limit>125.00 W</min_power_limit> + <max_power_limit>250.00 W</max_power_limit> + </power_readings> + <clocks> + <graphics_clock>405 MHz</graphics_clock> + <sm_clock>405 MHz</sm_clock> + <mem_clock>715 MHz</mem_clock> + <video_clock>835 MHz</video_clock> + </clocks> + <applications_clocks> + <graphics_clock>1189 MHz</graphics_clock> + <mem_clock>715 MHz</mem_clock> + </applications_clocks> + <default_applications_clocks> + <graphics_clock>1189 MHz</graphics_clock> + <mem_clock>715 MHz</mem_clock> + </default_applications_clocks> + <max_clocks> + <graphics_clock>1328 MHz</graphics_clock> + <sm_clock>1328 MHz</sm_clock> + <mem_clock>715 MHz</mem_clock> + <video_clock>1328 MHz</video_clock> + </max_clocks> + <clock_policy> + <auto_boost>N/A</auto_boost> + <auto_boost_default>N/A</auto_boost_default> + </clock_policy> + <supported_clocks> + <supported_mem_clock> + <value>715 MHz</value> + <supported_graphics_clock>1328 MHz</supported_graphics_clock> + <supported_graphics_clock>1316 MHz</supported_graphics_clock> + <supported_graphics_clock>1303 MHz</supported_graphics_clock> + <supported_graphics_clock>1290 MHz</supported_graphics_clock> + <supported_graphics_clock>1278 MHz</supported_graphics_clock> + <supported_graphics_clock>1265 MHz</supported_graphics_clock> + <supported_graphics_clock>1252 MHz</supported_graphics_clock> + <supported_graphics_clock>1240 MHz</supported_graphics_clock> + <supported_graphics_clock>1227 MHz</supported_graphics_clock> + <supported_graphics_clock>1215 MHz</supported_graphics_clock> + <supported_graphics_clock>1202 MHz</supported_graphics_clock> + <supported_graphics_clock>1189 MHz</supported_graphics_clock> + <supported_graphics_clock>1177 MHz</supported_graphics_clock> + <supported_graphics_clock>1164 MHz</supported_graphics_clock> + <supported_graphics_clock>1151 MHz</supported_graphics_clock> + <supported_graphics_clock>1139 MHz</supported_graphics_clock> + <supported_graphics_clock>1126 MHz</supported_graphics_clock> + <supported_graphics_clock>1113 MHz</supported_graphics_clock> + <supported_graphics_clock>1101 MHz</supported_graphics_clock> + <supported_graphics_clock>1088 MHz</supported_graphics_clock> + <supported_graphics_clock>1075 MHz</supported_graphics_clock> + <supported_graphics_clock>1063 MHz</supported_graphics_clock> + <supported_graphics_clock>1050 MHz</supported_graphics_clock> + <supported_graphics_clock>1037 MHz</supported_graphics_clock> + <supported_graphics_clock>1025 MHz</supported_graphics_clock> + <supported_graphics_clock>1012 MHz</supported_graphics_clock> + <supported_graphics_clock>999 MHz</supported_graphics_clock> + <supported_graphics_clock>987 MHz</supported_graphics_clock> + <supported_graphics_clock>974 MHz</supported_graphics_clock> + <supported_graphics_clock>961 MHz</supported_graphics_clock> + <supported_graphics_clock>949 MHz</supported_graphics_clock> + <supported_graphics_clock>936 MHz</supported_graphics_clock> + <supported_graphics_clock>923 MHz</supported_graphics_clock> + <supported_graphics_clock>911 MHz</supported_graphics_clock> + <supported_graphics_clock>898 MHz</supported_graphics_clock> + <supported_graphics_clock>885 MHz</supported_graphics_clock> + <supported_graphics_clock>873 MHz</supported_graphics_clock> + <supported_graphics_clock>860 MHz</supported_graphics_clock> + <supported_graphics_clock>847 MHz</supported_graphics_clock> + <supported_graphics_clock>835 MHz</supported_graphics_clock> + <supported_graphics_clock>822 MHz</supported_graphics_clock> + <supported_graphics_clock>810 MHz</supported_graphics_clock> + <supported_graphics_clock>797 MHz</supported_graphics_clock> + <supported_graphics_clock>784 MHz</supported_graphics_clock> + <supported_graphics_clock>772 MHz</supported_graphics_clock> + <supported_graphics_clock>759 MHz</supported_graphics_clock> + <supported_graphics_clock>746 MHz</supported_graphics_clock> + <supported_graphics_clock>734 MHz</supported_graphics_clock> + <supported_graphics_clock>721 MHz</supported_graphics_clock> + <supported_graphics_clock>708 MHz</supported_graphics_clock> + <supported_graphics_clock>696 MHz</supported_graphics_clock> + <supported_graphics_clock>683 MHz</supported_graphics_clock> + <supported_graphics_clock>670 MHz</supported_graphics_clock> + <supported_graphics_clock>658 MHz</supported_graphics_clock> + <supported_graphics_clock>645 MHz</supported_graphics_clock> + <supported_graphics_clock>632 MHz</supported_graphics_clock> + <supported_graphics_clock>620 MHz</supported_graphics_clock> + <supported_graphics_clock>607 MHz</supported_graphics_clock> + <supported_graphics_clock>594 MHz</supported_graphics_clock> + <supported_graphics_clock>582 MHz</supported_graphics_clock> + <supported_graphics_clock>569 MHz</supported_graphics_clock> + <supported_graphics_clock>556 MHz</supported_graphics_clock> + <supported_graphics_clock>544 MHz</supported_graphics_clock> + </supported_mem_clock> + </supported_clocks> + <processes> + </processes> + <accounted_processes> + </accounted_processes> + </gpu> + + <gpu id="0000:82:00.0"> + <product_name>Tesla P100-PCIE-12GB</product_name> + <product_brand>Tesla</product_brand> + <display_mode>Disabled</display_mode> + <display_active>Disabled</display_active> + <persistence_mode>Disabled</persistence_mode> + <accounting_mode>Disabled</accounting_mode> + <accounting_mode_buffer_size>1920</accounting_mode_buffer_size> + <driver_model> + <current_dm>N/A</current_dm> + <pending_dm>N/A</pending_dm> + </driver_model> + <serial>0320717031755</serial> + <uuid>GPU-46915a82-3fd2-8e11-ae26-a80b607c04f3</uuid> + <minor_number>1</minor_number> + <vbios_version>86.00.3A.00.02</vbios_version> + <multigpu_board>No</multigpu_board> + <board_id>0x8200</board_id> + <gpu_part_number>900-2H400-0110-030</gpu_part_number> + <inforom_version> + <img_version>H400.0202.00.01</img_version> + <oem_object>1.1</oem_object> + <ecc_object>4.1</ecc_object> + <pwr_object>N/A</pwr_object> + </inforom_version> + <gpu_operation_mode> + <current_gom>N/A</current_gom> + <pending_gom>N/A</pending_gom> + </gpu_operation_mode> + <gpu_virtualization_mode> + <virtualization_mode>None</virtualization_mode> + </gpu_virtualization_mode> + <pci> + <pci_bus>82</pci_bus> + <pci_device>00</pci_device> + <pci_domain>0000</pci_domain> + <pci_device_id>15F710DE</pci_device_id> + <pci_bus_id>0000:82:00.0</pci_bus_id> + <pci_sub_system_id>11DA10DE</pci_sub_system_id> + <pci_gpu_link_info> + <pcie_gen> + <max_link_gen>3</max_link_gen> + <current_link_gen>3</current_link_gen> + </pcie_gen> + <link_widths> + <max_link_width>16x</max_link_width> + <current_link_width>16x</current_link_width> + </link_widths> + </pci_gpu_link_info> + <pci_bridge_chip> + <bridge_chip_type>N/A</bridge_chip_type> + <bridge_chip_fw>N/A</bridge_chip_fw> + </pci_bridge_chip> + <replay_counter>0</replay_counter> + <tx_util>0 KB/s</tx_util> + <rx_util>0 KB/s</rx_util> + </pci> + <fan_speed>N/A</fan_speed> + <performance_state>P0</performance_state> + <clocks_throttle_reasons> + <clocks_throttle_reason_gpu_idle>Active</clocks_throttle_reason_gpu_idle> + <clocks_throttle_reason_applications_clocks_setting>Not Active</clocks_throttle_reason_applications_clocks_setting> + <clocks_throttle_reason_sw_power_cap>Not Active</clocks_throttle_reason_sw_power_cap> + <clocks_throttle_reason_hw_slowdown>Not Active</clocks_throttle_reason_hw_slowdown> + <clocks_throttle_reason_sync_boost>Not Active</clocks_throttle_reason_sync_boost> + <clocks_throttle_reason_unknown>Not Active</clocks_throttle_reason_unknown> + </clocks_throttle_reasons> + <fb_memory_usage> + <total>12193 MiB</total> + <used>0 MiB</used> + <free>12193 MiB</free> + </fb_memory_usage> + <bar1_memory_usage> + <total>16384 MiB</total> + <used>2 MiB</used> + <free>16382 MiB</free> + </bar1_memory_usage> + <compute_mode>Default</compute_mode> + <utilization> + <gpu_util>10.3 %</gpu_util> + <memory_util>0 %</memory_util> + <encoder_util>0 %</encoder_util> + <decoder_util>0 %</decoder_util> + </utilization> + <encoder_stats> + <session_count>0</session_count> + <average_fps>0</average_fps> + <average_latency>0 ms</average_latency> + </encoder_stats> + <ecc_mode> + <current_ecc>Enabled</current_ecc> + <pending_ecc>Enabled</pending_ecc> + </ecc_mode> + <ecc_errors> + <volatile> + <single_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </single_bit> + <double_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </double_bit> + </volatile> + <aggregate> + <single_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </single_bit> + <double_bit> + <device_memory>0</device_memory> + <register_file>0</register_file> + <l1_cache>N/A</l1_cache> + <l2_cache>0</l2_cache> + <texture_memory>0</texture_memory> + <texture_shm>0</texture_shm> + <total>0</total> + </double_bit> + </aggregate> + </ecc_errors> + <retired_pages> + <multiple_single_bit_retirement> + <retired_count>0</retired_count> + <retired_page_addresses> + </retired_page_addresses> + </multiple_single_bit_retirement> + <double_bit_retirement> + <retired_count>0</retired_count> + <retired_page_addresses> + </retired_page_addresses> + </double_bit_retirement> + <pending_retirement>No</pending_retirement> + </retired_pages> + <temperature> + <gpu_temp>34 C</gpu_temp> + <gpu_temp_max_threshold>85 C</gpu_temp_max_threshold> + <gpu_temp_slow_threshold>82 C</gpu_temp_slow_threshold> + </temperature> + <power_readings> + <power_state>P0</power_state> + <power_management>Supported</power_management> + <power_draw>25.54 W</power_draw> + <power_limit>250.00 W</power_limit> + <default_power_limit>250.00 W</default_power_limit> + <enforced_power_limit>250.00 W</enforced_power_limit> + <min_power_limit>125.00 W</min_power_limit> + <max_power_limit>250.00 W</max_power_limit> + </power_readings> + <clocks> + <graphics_clock>405 MHz</graphics_clock> + <sm_clock>405 MHz</sm_clock> + <mem_clock>715 MHz</mem_clock> + <video_clock>835 MHz</video_clock> + </clocks> + <applications_clocks> + <graphics_clock>1189 MHz</graphics_clock> + <mem_clock>715 MHz</mem_clock> + </applications_clocks> + <default_applications_clocks> + <graphics_clock>1189 MHz</graphics_clock> + <mem_clock>715 MHz</mem_clock> + </default_applications_clocks> + <max_clocks> + <graphics_clock>1328 MHz</graphics_clock> + <sm_clock>1328 MHz</sm_clock> + <mem_clock>715 MHz</mem_clock> + <video_clock>1328 MHz</video_clock> + </max_clocks> + <clock_policy> + <auto_boost>N/A</auto_boost> + <auto_boost_default>N/A</auto_boost_default> + </clock_policy> + <supported_clocks> + <supported_mem_clock> + <value>715 MHz</value> + <supported_graphics_clock>1328 MHz</supported_graphics_clock> + <supported_graphics_clock>1316 MHz</supported_graphics_clock> + <supported_graphics_clock>1303 MHz</supported_graphics_clock> + <supported_graphics_clock>1290 MHz</supported_graphics_clock> + <supported_graphics_clock>1278 MHz</supported_graphics_clock> + <supported_graphics_clock>1265 MHz</supported_graphics_clock> + <supported_graphics_clock>1252 MHz</supported_graphics_clock> + <supported_graphics_clock>1240 MHz</supported_graphics_clock> + <supported_graphics_clock>1227 MHz</supported_graphics_clock> + <supported_graphics_clock>1215 MHz</supported_graphics_clock> + <supported_graphics_clock>1202 MHz</supported_graphics_clock> + <supported_graphics_clock>1189 MHz</supported_graphics_clock> + <supported_graphics_clock>1177 MHz</supported_graphics_clock> + <supported_graphics_clock>1164 MHz</supported_graphics_clock> + <supported_graphics_clock>1151 MHz</supported_graphics_clock> + <supported_graphics_clock>1139 MHz</supported_graphics_clock> + <supported_graphics_clock>1126 MHz</supported_graphics_clock> + <supported_graphics_clock>1113 MHz</supported_graphics_clock> + <supported_graphics_clock>1101 MHz</supported_graphics_clock> + <supported_graphics_clock>1088 MHz</supported_graphics_clock> + <supported_graphics_clock>1075 MHz</supported_graphics_clock> + <supported_graphics_clock>1063 MHz</supported_graphics_clock> + <supported_graphics_clock>1050 MHz</supported_graphics_clock> + <supported_graphics_clock>1037 MHz</supported_graphics_clock> + <supported_graphics_clock>1025 MHz</supported_graphics_clock> + <supported_graphics_clock>1012 MHz</supported_graphics_clock> + <supported_graphics_clock>999 MHz</supported_graphics_clock> + <supported_graphics_clock>987 MHz</supported_graphics_clock> + <supported_graphics_clock>974 MHz</supported_graphics_clock> + <supported_graphics_clock>961 MHz</supported_graphics_clock> + <supported_graphics_clock>949 MHz</supported_graphics_clock> + <supported_graphics_clock>936 MHz</supported_graphics_clock> + <supported_graphics_clock>923 MHz</supported_graphics_clock> + <supported_graphics_clock>911 MHz</supported_graphics_clock> + <supported_graphics_clock>898 MHz</supported_graphics_clock> + <supported_graphics_clock>885 MHz</supported_graphics_clock> + <supported_graphics_clock>873 MHz</supported_graphics_clock> + <supported_graphics_clock>860 MHz</supported_graphics_clock> + <supported_graphics_clock>847 MHz</supported_graphics_clock> + <supported_graphics_clock>835 MHz</supported_graphics_clock> + <supported_graphics_clock>822 MHz</supported_graphics_clock> + <supported_graphics_clock>810 MHz</supported_graphics_clock> + <supported_graphics_clock>797 MHz</supported_graphics_clock> + <supported_graphics_clock>784 MHz</supported_graphics_clock> + <supported_graphics_clock>772 MHz</supported_graphics_clock> + <supported_graphics_clock>759 MHz</supported_graphics_clock> + <supported_graphics_clock>746 MHz</supported_graphics_clock> + <supported_graphics_clock>734 MHz</supported_graphics_clock> + <supported_graphics_clock>721 MHz</supported_graphics_clock> + <supported_graphics_clock>708 MHz</supported_graphics_clock> + <supported_graphics_clock>696 MHz</supported_graphics_clock> + <supported_graphics_clock>683 MHz</supported_graphics_clock> + <supported_graphics_clock>670 MHz</supported_graphics_clock> + <supported_graphics_clock>658 MHz</supported_graphics_clock> + <supported_graphics_clock>645 MHz</supported_graphics_clock> + <supported_graphics_clock>632 MHz</supported_graphics_clock> + <supported_graphics_clock>620 MHz</supported_graphics_clock> + <supported_graphics_clock>607 MHz</supported_graphics_clock> + <supported_graphics_clock>594 MHz</supported_graphics_clock> + <supported_graphics_clock>582 MHz</supported_graphics_clock> + <supported_graphics_clock>569 MHz</supported_graphics_clock> + <supported_graphics_clock>556 MHz</supported_graphics_clock> + <supported_graphics_clock>544 MHz</supported_graphics_clock> + </supported_mem_clock> + </supported_clocks> + <processes> + </processes> + <accounted_processes> + </accounted_processes> + </gpu> + +</nvidia_smi_log> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/15319c79/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java index bff8612..f3b15ff 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppInfo.java @@ -497,7 +497,7 @@ public class AppInfo { public Map<String, Long> getPreemptedResourceSecondsMap() { return preemptedResourceSecondsMap; } - + public List<ResourceRequestInfo> getResourceRequests() { return this.resourceRequests; } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org