@@ -37,23 +37,22 @@ def calculate_latencies(timestamps):
3737 latencies ['post_processing_time' ] = timestamps ['post_processing_time' ]
3838
3939 latencies ['execution_time' ] = (timestamps ['response_created' ] -
40- timestamps ['request_fetched' ]) * 1000
40+ timestamps ['request_fetched' ]) * 1000
4141
4242 latencies ['response_handling' ] = (timestamps ['response_enqueued' ] -
43- timestamps ['response_created' ]) * 1000
43+ timestamps ['response_created' ]) * 1000
4444
4545 latencies ['enqueue_response_to_handle' ] = (
46- timestamps ['handle_response' ] -
47- timestamps ['response_enqueued' ]) * 1000
46+ timestamps ['handle_response' ] - timestamps ['response_enqueued' ]) * 1000
4847
4948 latencies ['total_e2e' ] = (timestamps ['handle_response' ] -
5049 timestamps ['executor_submit_request' ]) * 1000
5150
5251 latencies ['communication_overhead' ] = (
5352 (timestamps ['worker_enqueue_request' ] -
54- timestamps ['executor_submit_request' ]) +
53+ timestamps ['executor_submit_request' ]) +
5554 (timestamps ['handle_response' ] -
56- timestamps ['response_enqueued' ])) * 1000
55+ timestamps ['response_enqueued' ])) * 1000
5756
5857 return latencies
5958
@@ -79,7 +78,20 @@ def analyze_average_timestamps(all_timestamps):
7978 return
8079
8180 # Calculate averages
82- print (f"\n === [{ mode } ] Latency Breakdown (milliseconds) - Average over { len (all_timestamps )} request ===" )
81+ print (
82+ f"\n === [{ mode } ] Latency Breakdown (milliseconds) - Average over { len (all_timestamps )} request ==="
83+ )
84+
85+ # Print first 20 submit_request_to_enqueue values
86+ submit_to_enqueue_values = [
87+ lat ['submit_request_to_enqueue' ] for lat in all_latencies
88+ if 'submit_request_to_enqueue' in lat
89+ ]
90+ if submit_to_enqueue_values :
91+ first_20 = ', ' .join (
92+ [f"{ x :.2f} " for x in submit_to_enqueue_values [:20 ]])
93+ print (f" Submit to enqueue (first 20, ms): { first_20 } " , flush = True )
94+ print (flush = True )
8395
8496 metrics = [
8597 ('submit_request_to_enqueue' , 'Submit to enqueue' ),
@@ -108,9 +120,11 @@ def analyze_average_timestamps(all_timestamps):
108120 min_val = min (values )
109121 max_val = max (values )
110122 variance = sum ((x - avg )** 2 for x in values ) / len (values )
111-
123+
112124 if metric_key == 'num_iterations' :
113- print (f" { metric_name :48s} : { avg :8.1f} (min: { min_val :8.1f} , max: { max_val :9.1f} )" )
125+ print (
126+ f" { metric_name :48s} : { avg :8.1f} (min: { min_val :8.1f} , max: { max_val :9.1f} )"
127+ )
114128 else :
115129 print (
116130 f" { metric_name :48s} : { avg :8.3f} ms (min: { min_val :8.3f} , max: { max_val :9.3f} , var: { variance :10.3f} )"
@@ -156,4 +170,42 @@ def print_fetch_statistics(num_fetched_requests, fetch_call_count, rank=None):
156170 percentage = (count / len (num_fetched_requests )) * 100
157171 print (f" { size :3d} requests: { count :5d} times ({ percentage :5.1f} %)" )
158172
173+ print (f"\n Num fetched requests (all iterations): { num_fetched_requests } " )
174+
175+ print ("=" * 70 )
176+
177+
178+ def print_enqueue_statistics (enqueue_timings ):
179+ if not is_timestamp_debug_enabled ():
180+ return
181+
182+ if not enqueue_timings :
183+ return
184+
185+ mode = "[Ray]" if mpi_disabled () else "[MPI]"
186+ num_requests = len (enqueue_timings )
187+
188+ print (
189+ f"\n === { mode } Enqueue Request Timing Statistics ({ num_requests } requests) ==="
190+ )
191+ first_20_enqueue = ', ' .join ([f"{ x :.2f} " for x in enqueue_timings [:20 ]])
192+ print (f" Direct enqueue (first 20, ms): { first_20_enqueue } " , flush = True )
193+
194+ avg = sum (enqueue_timings ) / num_requests
195+ min_val = min (enqueue_timings )
196+ max_val = max (enqueue_timings )
197+
198+ # Calculate percentiles
199+ sorted_timings = sorted (enqueue_timings )
200+ p10 = sorted_timings [int (num_requests *
201+ 0.1 )] if num_requests > 1 else sorted_timings [0 ]
202+ p50 = sorted_timings [num_requests // 2 ]
203+ p90 = sorted_timings [int (num_requests * 0.9 )]
204+
205+ print (f" Avg: { avg :.2f} ms" )
206+ print (f" Min: { min_val :.2f} ms" )
207+ print (f" Max: { max_val :.2f} ms" )
208+ print (f" P10: { p10 :.2f} ms" )
209+ print (f" P50: { p50 :.2f} ms" )
210+ print (f" P90: { p90 :.2f} ms" )
159211 print ("=" * 70 )
0 commit comments