Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
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)
Example #5
0
    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)