def testUseProcessStats(self): from mars import resource cpu_total = resource.cpu_count() mem_total = resource.virtual_memory().total try: os.environ['MARS_USE_PROCESS_STAT'] = '1' os.environ['MARS_CPU_TOTAL'] = str(cpu_total) os.environ['MARS_MEMORY_TOTAL'] = str(mem_total) resource = reload_module(resource) resource.cpu_percent() mem_stats = resource.virtual_memory() self.assertGreaterEqual(mem_stats.available, 0) self.assertGreaterEqual(mem_stats.total, 0) self.assertGreaterEqual(mem_stats.percent, 0) self.assertGreaterEqual(mem_stats.used, 0) self.assertGreaterEqual(mem_stats.free, 0) cpu_usage = resource.cpu_percent() self.assertGreaterEqual(cpu_usage, 0) finally: del os.environ['MARS_USE_PROCESS_STAT'] del os.environ['MARS_CPU_TOTAL'] del os.environ['MARS_MEMORY_TOTAL'] reload_module(resource)
def testCUDAInfo(self): from mars import resource from xml.etree import ElementTree self.assertTrue((resource.cuda_info() is None and resource.cuda_card_stats() is None) or (resource.cuda_info() is not None and resource.cuda_card_stats() is not None)) try: resource._last_nvml_output = ElementTree.fromstring( _MOCK_NVIDIA_SMI_RESULT) resource._last_nvml_output_time = time.time() cuda_info = resource.cuda_info() self.assertEqual(cuda_info.driver_version, '410.79') self.assertEqual(cuda_info.cuda_version, '10.0') self.assertListEqual(cuda_info.products, ['Tesla K80']) self.assertEqual(cuda_info.gpu_count, 1) cuda_card_stats = resource.cuda_card_stats() self.assertEqual(len(cuda_card_stats), 1) self.assertEqual(cuda_card_stats[0].product_name, 'Tesla K80') self.assertAlmostEqual(cuda_card_stats[0].temperature, 34) self.assertAlmostEqual(cuda_card_stats[0].gpu_usage, 0.1) self.assertAlmostEqual(cuda_card_stats[0].fb_mem_info.total, 1024**3) self.assertAlmostEqual(cuda_card_stats[0].fb_mem_info.used, 1024**3 / 2) self.assertAlmostEqual(cuda_card_stats[0].fb_mem_info.free, 1024**3 / 2) self.assertAlmostEqual(cuda_card_stats[0].fb_mem_info.percent, 0.5) finally: reload_module(resource)
def testStats(self): from mars import resource resource = reload_module(resource) resource.cpu_percent() mem_stats = resource.virtual_memory() self.assertGreaterEqual(mem_stats.available, 0) self.assertGreaterEqual(mem_stats.total, 0) self.assertGreaterEqual(mem_stats.percent, 0) self.assertGreaterEqual(mem_stats.used, 0) self.assertGreaterEqual(mem_stats.free, 0) cpu_usage = resource.cpu_percent() time.sleep(0.1) self.assertGreaterEqual(cpu_usage, 0) resource.disk_io_usage() time.sleep(0.1) recv_speed, send_speed = resource.disk_io_usage() self.assertGreaterEqual(recv_speed, 0) self.assertGreaterEqual(send_speed, 0) resource.net_io_usage() time.sleep(0.1) recv_speed, send_speed = resource.net_io_usage() self.assertGreaterEqual(recv_speed, 0) self.assertGreaterEqual(send_speed, 0)
def testUseCGroupStats(self): from mars import resource fd, mem_stat_path = tempfile.mkstemp(prefix='test-mars-res-') with os.fdopen(fd, 'w') as f: f.write(_memory_stat_content) old_stat_file = resource.CGROUP_MEM_STAT_FILE try: os.environ['MARS_MEM_USE_CGROUP_STAT'] = '1' resource = reload_module(resource) resource.CGROUP_MEM_STAT_FILE = mem_stat_path mem_stats = resource.virtual_memory() self.assertEqual(mem_stats.total, 1073741824) self.assertEqual(mem_stats.used, 707457024) finally: resource.CGROUP_MEM_STAT_FILE = old_stat_file del os.environ['MARS_MEM_USE_CGROUP_STAT'] os.unlink(mem_stat_path) reload_module(resource)
def testUseCGroupStats(self): from mars import resource fd, cpu_stat_path = tempfile.mkstemp(prefix='test-mars-res-cpu-') with os.fdopen(fd, 'w') as f: f.write(_cpu_stat_first) fd, mem_stat_path = tempfile.mkstemp(prefix='test-mars-res-mem-') with os.fdopen(fd, 'w') as f: f.write(_memory_stat_content) old_cpu_stat_file = resource.CGROUP_CPU_STAT_FILE old_mem_stat_file = resource.CGROUP_MEM_STAT_FILE old_shm_path = resource._shm_path try: os.environ['MARS_USE_CGROUP_STAT'] = '1' resource = reload_module(resource) resource.CGROUP_CPU_STAT_FILE = cpu_stat_path resource.CGROUP_MEM_STAT_FILE = mem_stat_path resource._shm_path = None self.assertIsNone(resource.cpu_percent()) time.sleep(0.5) with open(cpu_stat_path, 'w') as f: f.write(_cpu_stat_last) self.assertGreater(resource.cpu_percent(), 50) self.assertLess(resource.cpu_percent(), 150) mem_stats = resource.virtual_memory() self.assertEqual(mem_stats.total, 1073741824) self.assertEqual(mem_stats.used, 218181632) finally: resource.CGROUP_CPU_STAT_FILE = old_cpu_stat_file resource.CGROUP_MEM_STAT_FILE = old_mem_stat_file resource._shm_path = old_shm_path del os.environ['MARS_USE_CGROUP_STAT'] os.unlink(cpu_stat_path) os.unlink(mem_stat_path) reload_module(resource)