63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
|
|
"""
|
||
|
|
Worker Pool Performance-Metriken.
|
||
|
|
|
||
|
|
Gemeinsame Datenstrukturen für Performance- und Ressourcenverbrauch-Metriken
|
||
|
|
der Worker-Pools (Saxon, FOP).
|
||
|
|
"""
|
||
|
|
|
||
|
|
from dataclasses import dataclass, field
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class WorkerPoolMetrics:
|
||
|
|
"""
|
||
|
|
Metriken für Worker-Pool Performance und Ressourcenverbrauch.
|
||
|
|
"""
|
||
|
|
|
||
|
|
# Kompilierungszeit
|
||
|
|
compilation_time_seconds: float = 0.0
|
||
|
|
|
||
|
|
# Worker-Start-Zeiten
|
||
|
|
worker_start_times: list[float] = field(default_factory=list)
|
||
|
|
total_worker_start_time_seconds: float = 0.0
|
||
|
|
average_worker_start_time_seconds: float = 0.0
|
||
|
|
|
||
|
|
# RAM-Verbrauch (in MB)
|
||
|
|
ram_before_transform_mb_per_worker: list[float] = field(default_factory=list)
|
||
|
|
ram_after_transform_mb_per_worker: list[float] = field(default_factory=list)
|
||
|
|
total_ram_before_mb: float = 0.0
|
||
|
|
total_ram_after_mb: float = 0.0
|
||
|
|
average_ram_before_mb: float = 0.0
|
||
|
|
average_ram_after_mb: float = 0.0
|
||
|
|
|
||
|
|
# XSL-Kompilierungszeiten (nur für Saxon)
|
||
|
|
xsl_compilation_times: list[float] = field(default_factory=list)
|
||
|
|
total_xsl_compilation_time_seconds: float = 0.0
|
||
|
|
average_xsl_compilation_time_seconds: float = 0.0
|
||
|
|
|
||
|
|
def calculate_aggregates(self):
|
||
|
|
"""Berechnet aggregierte Werte (Summen, Durchschnitte)."""
|
||
|
|
# Worker-Start-Zeiten
|
||
|
|
if self.worker_start_times:
|
||
|
|
self.total_worker_start_time_seconds = sum(self.worker_start_times)
|
||
|
|
self.average_worker_start_time_seconds = self.total_worker_start_time_seconds / len(
|
||
|
|
self.worker_start_times
|
||
|
|
)
|
||
|
|
|
||
|
|
# RAM vor Transformation
|
||
|
|
if self.ram_before_transform_mb_per_worker:
|
||
|
|
self.total_ram_before_mb = sum(self.ram_before_transform_mb_per_worker)
|
||
|
|
self.average_ram_before_mb = self.total_ram_before_mb / len(self.ram_before_transform_mb_per_worker)
|
||
|
|
|
||
|
|
# RAM nach Transformation
|
||
|
|
if self.ram_after_transform_mb_per_worker:
|
||
|
|
self.total_ram_after_mb = sum(self.ram_after_transform_mb_per_worker)
|
||
|
|
self.average_ram_after_mb = self.total_ram_after_mb / len(self.ram_after_transform_mb_per_worker)
|
||
|
|
|
||
|
|
# XSL-Kompilierungszeiten
|
||
|
|
if self.xsl_compilation_times:
|
||
|
|
self.total_xsl_compilation_time_seconds = sum(self.xsl_compilation_times)
|
||
|
|
self.average_xsl_compilation_time_seconds = self.total_xsl_compilation_time_seconds / len(
|
||
|
|
self.xsl_compilation_times
|
||
|
|
)
|