diff --git a/mindinsight/profiler/analyser/minddata_analyser.py b/mindinsight/profiler/analyser/minddata_analyser.py index 2e82b5eb..1a0af02f 100644 --- a/mindinsight/profiler/analyser/minddata_analyser.py +++ b/mindinsight/profiler/analyser/minddata_analyser.py @@ -73,11 +73,12 @@ class MinddataAnalyser(BaseAnalyser): if len(node_info) > 2 and info_type in ["all", "time"]: time_info["size"] = len(time_list) time_info["info"] = {"get_next": time_list} - time_info["summary"] = { - "time_summary": { - "avg_cost": "0" if not time_list else str(total_cost / len(time_list)) + if time_info["size"]: + time_info["summary"] = { + "time_summary": { + "avg_cost": "0" if not time_list else str(total_cost / len(time_list)) + } } - } return queue_info, time_info @@ -103,15 +104,7 @@ class MinddataAnalyser(BaseAnalyser): queue_size_list = [] empty_step, full_step = 0, 0 - device_queue_file_name = "device_queue_profiling_" + self._device_id + ".txt" - device_queue_file_path = MinddataAnalyser.find_target_file(self._profiling_dir, device_queue_file_name) - feed_file_name = "dataset_iterator_profiling_" + self._device_id + ".txt" - feed_file_path = MinddataAnalyser.find_target_file(self._profiling_dir, feed_file_name) - file_path = "" - if device_queue_file_path: - file_path = device_queue_file_path - elif not device_queue_file_path and feed_file_path: - file_path = feed_file_path + file_path = self.get_device_queue_file_path() if file_path: with open(file_path) as data_file: @@ -145,9 +138,10 @@ class MinddataAnalyser(BaseAnalyser): time_info["info"] = {"total_cost": total_time_list, "push_cost": push_time_list, "get_cost": get_time_list} - time_info["summary"] = {"time_summary": {"avg_cost": total_cost/time_info["size"]}} - time_info["summary"]["time_summary"]["get_cost"] = total_get/time_info["size"] - time_info["summary"]["time_summary"]["push_cost"] = total_push/time_info["size"] + if time_info["size"]: + time_info["summary"] = {"time_summary": {"avg_cost": total_cost/time_info["size"]}} + time_info["summary"]["time_summary"]["get_cost"] = total_get/time_info["size"] + time_info["summary"]["time_summary"]["push_cost"] = total_push/time_info["size"] if info_type in ["all", "queue"]: queue_size_list = MinddataAnalyser.sort_step(queue_size_list) @@ -159,6 +153,25 @@ class MinddataAnalyser(BaseAnalyser): return queue_info, time_info + def get_device_queue_file_path(self): + """ + Get device queue file path. + + Returns: + str, the file path. + """ + device_queue_file_name = "device_queue_profiling_" + self._device_id + ".txt" + device_queue_file_path = MinddataAnalyser.find_target_file(self._profiling_dir, device_queue_file_name) + feed_file_name = "dataset_iterator_profiling_" + self._device_id + ".txt" + feed_file_path = MinddataAnalyser.find_target_file(self._profiling_dir, feed_file_name) + file_path = "" + if device_queue_file_path: + file_path = device_queue_file_path + elif not device_queue_file_path and feed_file_path: + file_path = feed_file_path + + return file_path + @staticmethod def analyse_queue_summary(get_next_queue_info, device_queue_info): """ @@ -171,6 +184,7 @@ class MinddataAnalyser(BaseAnalyser): Returns: dict, the summary of queue. """ + result = {} if get_next_queue_info and device_queue_info: result = {"data_process": {"status": "normal"}, "device_queue_op": {"status": "normal"}, @@ -190,13 +204,12 @@ class MinddataAnalyser(BaseAnalyser): "summary", {}).get("queue_summary", {}).get("empty_queue", 0) device_queue_full_count = device_queue_info.get( "summary", {}).get("queue_summary", {}).get("full_queue", 0) - result["device_queue_info"] = { - "summary": { - "empty_batch_count": device_queue_empty_count, - "full_batch_count": device_queue_full_count, - "total_batch": device_queue_info.get("size") - } - } + + result["device_queue_info"] = {"summary": { + "empty_batch_count": device_queue_empty_count, + "full_batch_count": device_queue_full_count, + "total_batch": device_queue_info.get("size")}} + if get_next_queue_empty_count: if device_queue_empty_count > device_queue_info.get("size", 0)*\ MinddataAnalyser.DEVICE_QUEUE_EMPTY_WARNING_THRESHOLD: @@ -226,9 +239,6 @@ class MinddataAnalyser(BaseAnalyser): if device_queue_empty_count > device_queue_info.get("size", 0)*0.7: result["data_process"]["status"] = "warning" - else: - result = {} - return result