def _iterate(self): iteration_start = time.time() # Get information about tasks. try: tasks = self._node.get_tasks() except TaskSynchronizationException as e: log.error('Cannot synchronize tasks with node (error=%s) - skip this iteration!', e) self._wait() return append_additional_labels_to_tasks(self._task_label_generators, tasks) log.debug('Tasks detected: %d', len(tasks)) # Keep sync of found tasks and internally managed containers. containers = self._containers_manager.sync_containers_state(tasks) log.log(TRACE, 'Tasks container mapping:\n%s', '\n'.join( ['%s(%s) = %s' % (task.name, task.task_id, container._cgroup_path) for task, container in containers.items()])) # @TODO why not in platform module? extra_platform_measurements = self._uncore_get_measurements() # Platform information platform, platform_metrics, platform_labels = platforms.collect_platform_information( self._rdt_enabled, self._gather_hw_mm_topology, extra_platform_measurements=extra_platform_measurements, include_optional_labels=False, ) # Common labels common_labels = dict(platform_labels, **self._extra_labels) try: tasks_data = _prepare_tasks_data(containers) except MissingMeasurementException as e: log.error('Cannot synchronize tasks measurements (error=%s) - skip this iteration!', e) self._wait() return # Inject other runners code. if self._iterate_body_callback is not None: self._iterate_body_callback(containers, platform, tasks_data, common_labels) self._wait() iteration_duration = time.time() - iteration_start profiling.profiler.register_duration('iteration', iteration_duration) # Generic metrics. metrics_package = MetricPackage(self._metrics_storage) metrics_package.add_metrics(_get_internal_metrics(tasks)) metrics_package.add_metrics(platform_metrics) metrics_package.add_metrics(_build_tasks_metrics(tasks_data)) metrics_package.add_metrics(profiling.profiler.get_metrics()) metrics_package.add_metrics(get_logging_metrics()) metrics_package.send(common_labels)
def _iterate(self): iteration_start = time.time() # Get information about tasks. try: tasks = self._node.get_tasks() except TaskSynchronizationException as e: log.error( 'Cannot synchronize tasks with node (error=%s) - skip this iteration!', e) self._wait() return append_additional_labels_to_tasks(self._task_label_generators, tasks) log.debug('Tasks detected: %d', len(tasks)) # Keep sync of found tasks and internally managed containers. containers = self._containers_manager.sync_containers_state(tasks) # Platform information platform, platform_metrics, platform_labels = platforms.collect_platform_information( self._rdt_enabled) # Common labels common_labels = dict(platform_labels, **self._extra_labels) # Tasks data tasks_measurements, tasks_resources, tasks_labels = _prepare_tasks_data( containers) tasks_metrics = _build_tasks_metrics(tasks_labels, tasks_measurements) self._iterate_body(containers, platform, tasks_measurements, tasks_resources, tasks_labels, common_labels) self._wait() iteration_duration = time.time() - iteration_start profiling.profiler.register_duration('iteration', iteration_duration) # Generic metrics. metrics_package = MetricPackage(self._metrics_storage) metrics_package.add_metrics(_get_internal_metrics(tasks)) metrics_package.add_metrics(platform_metrics) metrics_package.add_metrics(tasks_metrics) metrics_package.add_metrics(profiling.profiler.get_metrics()) metrics_package.add_metrics(get_logging_metrics()) metrics_package.send(common_labels)
def _iterate(self): iteration_start = time.time() # Get information about tasks. tasks = self._node.get_tasks() log.debug('Tasks detected: %d', len(tasks)) for task in tasks: sanitized_labels = dict() for label_key, label_value in task.labels.items(): sanitized_labels.update({sanitize_label(label_key): label_value}) task.labels = sanitized_labels # Keep sync of found tasks and internally managed containers. containers = self._containers_manager.sync_containers_state(tasks) # Platform information platform, platform_metrics, platform_labels = platforms.collect_platform_information( self._rdt_enabled) # Common labels common_labels = dict(platform_labels, **self._extra_labels) # Tasks data tasks_measurements, tasks_resources, tasks_labels = _prepare_tasks_data(containers) tasks_metrics = _build_tasks_metrics(tasks_labels, tasks_measurements) self._iterate_body(containers, platform, tasks_measurements, tasks_resources, tasks_labels, common_labels) self._wait() iteration_duration = time.time() - iteration_start profiling.profiler.register_duration('iteration', iteration_duration) # Generic metrics. metrics_package = MetricPackage(self._metrics_storage) metrics_package.add_metrics(_get_internal_metrics(tasks)) metrics_package.add_metrics(platform_metrics) metrics_package.add_metrics(tasks_metrics) metrics_package.add_metrics(profiling.profiler.get_metrics()) metrics_package.add_metrics(get_logging_metrics()) metrics_package.send(common_labels)