@@ -47,33 +47,52 @@ def analyze_data(
4747 Args:
4848 data (MemoryDataModel): memory data to analyze.
4949 args (Optional[MemoryAnalyzerArgs], optional): memory analysis arguments. Defaults to None.
50-
5150 Returns:
5251 TaskResult: Result of the memory analysis containing the status and message.
5352 """
53+
5454 if not args :
5555 args = MemoryAnalyzerArgs ()
5656
57+ def _bytes_to_gb (n : float ) -> float :
58+ return n / (1024 ** 3 )
59+
5760 free_memory = convert_to_bytes (data .mem_free )
5861 total_memory = convert_to_bytes (data .mem_total )
5962 used_memory = total_memory - free_memory
6063
61- if total_memory > convert_to_bytes (args .memory_threshold ):
62- max_allowed_used_mem = convert_to_bytes (args .memory_threshold ) * args .ratio
64+ threshold_bytes = convert_to_bytes (args .memory_threshold )
65+
66+ if total_memory > threshold_bytes :
67+ base_bytes = threshold_bytes
68+ base_source = "memory_threshold (max_expected)"
6369 else :
64- max_allowed_used_mem = total_memory * args .ratio
70+ base_bytes = total_memory
71+ base_source = "total_memory"
72+
73+ max_allowed_used_mem = base_bytes * args .ratio
74+
75+ used_gb = _bytes_to_gb (used_memory )
76+ allowed_gb = _bytes_to_gb (max_allowed_used_mem )
77+ base_gb = _bytes_to_gb (base_bytes )
6578
6679 if used_memory < max_allowed_used_mem :
67- self .result .message = "Memory usage is within maximum allowed used memory"
80+ self .result .message = (
81+ f"Memory usage is within limit: Used { used_gb :.2f} GB "
82+ f"(allowed { allowed_gb :.2f} GB; base={ base_source } { base_gb :.2f} GB × ratio={ args .ratio :.2f} )"
83+ )
6884 self .result .status = ExecutionStatus .OK
6985 else :
70- self .result .message = f"Memory usage exceeded max allowed! Used: { used_memory } , max allowed: { max_allowed_used_mem } "
86+ self .result .message = (
87+ f"Memory usage exceeded max allowed! Used { used_gb :.2f} GB, "
88+ f"max allowed { allowed_gb :.2f} GB "
89+ f"(base={ base_source } { base_gb :.2f} GB × ratio={ args .ratio :.2f} )"
90+ )
7191 self .result .status = ExecutionStatus .ERROR
7292 self ._log_event (
7393 category = EventCategory .OS ,
74- description = f" { self .result .message } , Actual: { used_memory } " ,
94+ description = self .result .message ,
7595 priority = EventPriority .CRITICAL ,
76- console_log = True ,
7796 )
7897
7998 return self .result
0 commit comments