@@ -44,6 +44,100 @@ The following sections present bandwidth and latency results in two forms:
4444most recent daily run, and evolution over time.
4545In the latter, dropdown menus are available to vary the parameters of the runs.
4646
47+ ## Latency Performance
48+
49+ Latency is measured using the
50+ [ margo-p2p-latency] ( https://github.com/mochi-hpc-experiments/mochi-tests/blob/main/perf-regression/margo-p2p-latency.c )
51+ benchmark, which runs on two processes located on distinct nodes, and issues no-op RPCs to measure round-trip time.
52+
53+ ### Latest Latency Results
54+
55+ ``` js
56+ // Get unique dates from latency data and sort chronologically
57+ const latencyDates = [... new Set (latencyData .map (d => String (d .date )))]
58+ .sort ((a , b ) => new Date (a) - new Date (b));
59+ const latestLatencyDateInput = Inputs .select (latencyDates, {
60+ label: " Date" ,
61+ value: latencyDates[latencyDates .length - 1 ]
62+ });
63+ const selectedLatencyDate = Generators .input (latestLatencyDateInput);
64+ ```
65+
66+ ``` js
67+ // Filter data for selected date (compare as strings)
68+ const latencyForDate = latencyData .filter (d => String (d .date ) === selectedLatencyDate);
69+
70+ // Prepare data for bar chart
71+ const latencyFalse = latencyForDate .find (d => d .busy_spin === false );
72+ const latencyTrue = latencyForDate .find (d => d .busy_spin === true );
73+
74+ const latencyBarData = [
75+ {
76+ category: " Busy Spin: false" ,
77+ latency: latencyFalse ? latencyFalse .med * 1e6 : 0
78+ },
79+ {
80+ category: " Busy Spin: true" ,
81+ latency: latencyTrue ? latencyTrue .med * 1e6 : 0
82+ }
83+ ];
84+ ```
85+
86+ ``` js
87+ html ` <div style =" margin-bottom : 1rem ;" >
88+ ${ latestLatencyDateInput}
89+ </div >`
90+ ```
91+
92+ ``` js
93+ Plot .plot ({
94+ marks: [
95+ Plot .barY (latencyBarData, {x: " category" , y: " latency" , fill: " category" })
96+ ],
97+ x: {label: null , tickFormat : () => " " },
98+ y: {label: " Latency (μs)" },
99+ color: {legend: true },
100+ width: 600 ,
101+ height: 400 ,
102+ marginLeft: 60 ,
103+ marginBottom: 60
104+ })
105+ ```
106+
107+ ### Latency Over Time
108+
109+ ``` js
110+ // Create input widget for busy_spin filtering
111+ const latencyBusySpinInput = Inputs .select ([true , false ], {label: " Busy Spin" , value: false });
112+ const latency_busy_spin = Generators .input (latencyBusySpinInput);
113+ ```
114+
115+ ``` js
116+ // Filter latency data based on busy_spin
117+ const filteredLatencyData = latencyData .filter (d => d .busy_spin === latency_busy_spin);
118+ ```
119+
120+ ``` js
121+ Plot .plot ({
122+ marks: [
123+ Plot .rectY (filteredLatencyData, {x: " date" , y : d => d .med * 1e6 , fill: " coral" , interval: " day" })
124+ ],
125+ x: {type: " utc" , label: " Date" , nice: true },
126+ y: {label: " Latency (μs)" },
127+ width: 800 ,
128+ height: 400 ,
129+ marginLeft: 60 ,
130+ marginBottom: 40
131+ })
132+ ```
133+
134+ ``` js
135+ // Display the input widget
136+ html ` <div style =" margin-top : 1rem ;" >
137+ ${ latencyBusySpinInput}
138+ </div >`
139+ ```
140+
47141## Bandwidth Performance
48142
49143Bandwidth is measured using the
@@ -103,43 +197,3 @@ html`<div style="display: flex; gap: 1rem; margin-top: 1rem; flex-wrap: wrap;">
103197</div >`
104198```
105199
106- ## Latency Performance
107-
108- ### Latest Latency Results
109-
110- TODO
111-
112- ### Latency Over Time
113-
114- ``` js
115- // Create input widget for busy_spin filtering
116- const latencyBusySpinInput = Inputs .select ([true , false ], {label: " Busy Spin" , value: false });
117- const latency_busy_spin = Generators .input (latencyBusySpinInput);
118- ```
119-
120- ``` js
121- // Filter latency data based on busy_spin
122- const filteredLatencyData = latencyData .filter (d => d .busy_spin === latency_busy_spin);
123- ```
124-
125- ``` js
126- Plot .plot ({
127- marks: [
128- Plot .rectY (filteredLatencyData, {x: " date" , y : d => d .med * 1e6 , fill: " coral" , interval: " day" })
129- ],
130- x: {type: " utc" , label: " Date" , nice: true },
131- y: {label: " Latency (μs)" },
132- width: 800 ,
133- height: 400 ,
134- marginLeft: 60 ,
135- marginBottom: 40
136- })
137- ```
138-
139- ``` js
140- // Display the input widget
141- html ` <div style =" margin-top : 1rem ;" >
142- ${ latencyBusySpinInput}
143- </div >`
144- ```
145-
0 commit comments