stat used connection latencies

This commit is contained in:
Youngjoon Lee 2025-02-06 17:21:34 +09:00
parent b2337c1253
commit 41ed890c3e
No known key found for this signature in database
GPG Key ID: D94003D91DE12141
2 changed files with 51 additions and 7 deletions

View File

@ -178,6 +178,10 @@ if __name__ == "__main__":
"max_latency_msg_persistent_index",
"max_latency_msg_temporal_latency_sec",
"max_latency_msg_temporal_index",
"min_conn_latency_sec",
"avg_conn_latency_sec",
"med_conn_latency_sec",
"max_conn_latency_sec",
"min_bandwidth_kbps",
"avg_bandwidth_kbps",
"max_bandwidth_kbps",
@ -262,6 +266,18 @@ if __name__ == "__main__":
map(str, latency_analysis.max_latency_analysis.temporal_indices)
)
)
csv_row.append(
float(latency_analysis.conn_latency_analysis.min_ms) / 1000.0
)
csv_row.append(
float(latency_analysis.conn_latency_analysis.avg_ms) / 1000.0
)
csv_row.append(
float(latency_analysis.conn_latency_analysis.med_ms) / 1000.0
)
csv_row.append(
float(latency_analysis.conn_latency_analysis.max_ms) / 1000.0
)
bandwidth_res = bandwidth_result(log_path, args.step_duration)
csv_row.append(bandwidth_res["min"] * 8 / 1000.0)

View File

@ -17,6 +17,7 @@ class LatencyAnalysis:
max_latency_analysis: "MessageLatencyAnalysis"
avg_latency_ms: int
median_latency_ms: int
conn_latency_analysis: "ConnectionLatencyAnalysis"
@classmethod
def build(cls, input_stream: Iterable[tuple[str, dict]]) -> "LatencyAnalysis":
@ -35,17 +36,18 @@ class LatencyAnalysis:
message_ids = pd.Series(message_ids)
return cls(
int(latencies.count()),
int(latencies.min()),
MessageLatencyAnalysis.build(
total_messages=int(latencies.count()),
min_latency_ms=int(latencies.min()),
min_latency_analysis=MessageLatencyAnalysis.build(
messages[str(message_ids[latencies.idxmin()])]
),
int(latencies.max()),
MessageLatencyAnalysis.build(
max_latency_ms=int(latencies.max()),
max_latency_analysis=MessageLatencyAnalysis.build(
messages[str(message_ids[latencies.idxmax()])]
),
int(latencies.mean()),
int(latencies.median()),
avg_latency_ms=int(latencies.mean()),
median_latency_ms=int(latencies.median()),
conn_latency_analysis=ConnectionLatencyAnalysis.build(messages),
)
@ -82,6 +84,32 @@ class MessageLatencyAnalysis:
return analysis
@dataclass
class ConnectionLatencyAnalysis:
min_ms: int
avg_ms: int
med_ms: int
max_ms: int
@classmethod
def build(
cls,
messages: dict[str, dict],
) -> "ConnectionLatencyAnalysis":
latencies = []
for message in messages.values():
for event in message["history"]:
if "NetworkReceived" in event["event_type"]:
latencies.append(event["duration_from_prev"])
latencies = pd.Series(latencies)
return cls(
int(latencies.min()),
int(latencies.mean()),
int(latencies.median()),
int(latencies.max()),
)
def build_argument_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Log analysis for nomos-simulations.")
parser.add_argument(