Skip to content

Commit 4713f68

Browse files
committed
added latency graph
1 parent 6564441 commit 4713f68

File tree

1 file changed

+94
-40
lines changed

1 file changed

+94
-40
lines changed

src/supercomputers/polaris/index.md

Lines changed: 94 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,100 @@ The following sections present bandwidth and latency results in two forms:
4444
most recent daily run, and evolution over time.
4545
In 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

49143
Bandwidth 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

Comments
 (0)