|
168 | 168 | const description = <<.DESCRIPTION>> |
169 | 169 | const metadata = <<.METADATA>> |
170 | 170 | const system_info = <<.SYSTEMINFO>> |
| 171 | + // Define consistent colors for TMA categories with child variations |
| 172 | + const tmaColors = { |
| 173 | + // Blue family for Frontend |
| 174 | + 'Frontend': '#5470c6', |
| 175 | + 'FrontendChild': '#7a90d3', // Lighter blue for all Frontend children |
| 176 | + |
| 177 | + // Green family for Backend |
| 178 | + 'Backend': '#91cc75', |
| 179 | + 'BackendChild': '#b3e0a0', // Lighter green for all Backend children |
| 180 | + |
| 181 | + // Yellow/Orange family for BadSpeculation |
| 182 | + 'BadSpeculation': '#fac858', |
| 183 | + 'BadSpeculationChild': '#ffda8a', // Lighter yellow for all BadSpeculation children |
| 184 | + |
| 185 | + // Red family for Retiring |
| 186 | + 'Retiring': '#ee6666', |
| 187 | + 'RetiringChild': '#f38989' // Lighter red for all Retiring children |
| 188 | + }; |
| 189 | + |
| 190 | + let tmasunburst = { |
| 191 | + tooltip: {}, |
| 192 | + color: [tmaColors.Frontend, tmaColors.BadSpeculation, tmaColors.Backend, tmaColors.Retiring], |
| 193 | + series: { |
| 194 | + nodeClick: false, |
| 195 | + type: "sunburst", |
| 196 | + radius: [60, "90%"], |
| 197 | + itemStyle: { |
| 198 | + borderRadius: 7, |
| 199 | + borderWidth: 2, |
| 200 | + }, |
| 201 | + data: [ |
| 202 | + { |
| 203 | + name: "<<.FRONTEND_LABEL>>", |
| 204 | + value: Math.round(<<.FRONTEND >> * 10) / 10, |
| 205 | + itemStyle: { color: tmaColors.Frontend }, |
| 206 | + children: [ |
| 207 | + { |
| 208 | + name: "<<.FETCHBANDWIDTH_LABEL>>", |
| 209 | + value: Math.round(<<.FETCHBANDWIDTH >> * 10) / 10, |
| 210 | + itemStyle: { color: tmaColors.FrontendChild } |
| 211 | + }, |
| 212 | + { |
| 213 | + name: "<<.FETCHLATENCY_LABEL>>", |
| 214 | + value: Math.round(<<.FETCHLATENCY >> * 10) / 10, |
| 215 | + itemStyle: { color: tmaColors.FrontendChild } |
| 216 | + }, |
| 217 | + ] |
| 218 | + }, |
| 219 | + { |
| 220 | + name: "<<.BADSPECULATION_LABEL>>", |
| 221 | + value: Math.round(<<.BADSPECULATION >> * 10) / 10, |
| 222 | + itemStyle: { color: tmaColors.BadSpeculation }, |
| 223 | + children: [ |
| 224 | + { |
| 225 | + name: "<<.BRANCHMISPREDICTS_LABEL>>", |
| 226 | + value: Math.round(<<.BRANCHMISPREDICTS >> * 10) / 10, |
| 227 | + itemStyle: { color: tmaColors.BadSpeculationChild } |
| 228 | + }, |
| 229 | + { |
| 230 | + name: "<<.MACHINECLEARS_LABEL>>", |
| 231 | + value: Math.round(<<.MACHINECLEARS >> * 10) / 10, |
| 232 | + itemStyle: { color: tmaColors.BadSpeculationChild } |
| 233 | + }, |
| 234 | + ] |
| 235 | + }, |
| 236 | + { |
| 237 | + name: "<<.BACKEND_LABEL>>", |
| 238 | + value: Math.round(<<.BACKEND >> * 10) / 10, |
| 239 | + itemStyle: { color: tmaColors.Backend }, |
| 240 | + children: [ |
| 241 | + { |
| 242 | + name: "<<.CORE_LABEL>>", |
| 243 | + value: Math.round(<<.COREDATA >> * 10) / 10, |
| 244 | + itemStyle: { color: tmaColors.BackendChild } |
| 245 | + }, |
| 246 | + { |
| 247 | + name: "<<.MEMORY_LABEL>>", |
| 248 | + value: Math.round(<<.MEMORY >> * 10) / 10, |
| 249 | + itemStyle: { color: tmaColors.BackendChild } |
| 250 | + }, |
| 251 | + ], |
| 252 | + }, |
| 253 | + { |
| 254 | + name: "<<.RETIRING_LABEL>>", |
| 255 | + value: Math.round(<<.RETIRING >> * 10) / 10, |
| 256 | + itemStyle: { color: tmaColors.Retiring }, |
| 257 | + children: [ |
| 258 | + { |
| 259 | + name: "<<.LIGHTOPS_LABEL>>", |
| 260 | + value: Math.round(<<.LIGHTOPS >> * 10) / 10, |
| 261 | + itemStyle: { color: tmaColors.RetiringChild } |
| 262 | + }, |
| 263 | + { |
| 264 | + name: "<<.HEAVYOPS_LABEL>>", |
| 265 | + value: Math.round(<<.HEAVYOPS >> * 10) / 10, |
| 266 | + itemStyle: { color: tmaColors.RetiringChild } |
| 267 | + }, |
| 268 | + ] |
| 269 | + }, |
| 270 | + ], |
| 271 | + radius: [20, "100%"], |
| 272 | + label: { |
| 273 | + rotate: "radial", |
| 274 | + }, |
| 275 | + }, |
| 276 | + } |
| 277 | + // the common config for all line charts |
171 | 278 | const base_line = { |
172 | 279 | xAxis: { |
173 | 280 | type: "category", |
|
185 | 292 | trigger: 'axis', |
186 | 293 | valueFormatter: (value) => value.toFixed(2), |
187 | 294 | }, |
188 | | - legend: {}, |
| 295 | + legend: { |
| 296 | + orient: 'horizontal', |
| 297 | + bottom: 0, |
| 298 | + left: 'center', |
| 299 | + show: true, |
| 300 | + selectedMode: false, // Prevents toggling series visibility by clicking on legend |
| 301 | + }, |
189 | 302 | } |
190 | 303 |
|
191 | 304 | let level1tma = { |
192 | 305 | ...base_line, |
| 306 | + color: [tmaColors.Frontend, tmaColors.Backend, tmaColors.Retiring, tmaColors.BadSpeculation], |
193 | 307 | series: [ |
194 | 308 | { |
195 | 309 | name: "Front-end", |
|
218 | 332 | ...base_line, |
219 | 333 | series: [ |
220 | 334 | { |
| 335 | + name: "CPU Utilization %", |
221 | 336 | type: 'line', |
222 | 337 | data: <<.CPUUTIL>>, |
223 | 338 | } |
|
228 | 343 | ...base_line, |
229 | 344 | series: [ |
230 | 345 | { |
| 346 | + name: "CPI", |
231 | 347 | type: 'line', |
232 | 348 | data: <<.CPIDATA>>, |
233 | 349 | } |
|
238 | 354 | ...base_line, |
239 | 355 | series: [ |
240 | 356 | { |
| 357 | + name: "CPU Frequency (GHz)", |
241 | 358 | type: 'line', |
242 | 359 | data: <<.CPUFREQ>>, |
243 | 360 | } |
|
248 | 365 | ...base_line, |
249 | 366 | series: [ |
250 | 367 | { |
| 368 | + name: "Remote DRAM Reads %", |
251 | 369 | type: 'line', |
252 | 370 | data: <<.REMOTENUMA>>, |
253 | 371 | } |
|
300 | 418 | ...base_line, |
301 | 419 | series: [ |
302 | 420 | { |
| 421 | + name: "Package Power (Watts)", |
303 | 422 | type: 'line', |
304 | 423 | data: <<.PKGPOWER>>, |
305 | 424 | } |
|
310 | 429 | ...base_line, |
311 | 430 | series: [ |
312 | 431 | { |
| 432 | + name: "DRAM Power (Watts)", |
313 | 433 | type: 'line', |
314 | 434 | data: <<.DRAMPOWER>>, |
315 | 435 | } |
|
418 | 538 | </ul> |
419 | 539 | </Grid> |
420 | 540 | <Grid item xs={7}> |
421 | | - <ReactECharts style={{ minHeight: "400px" }} option={{ |
422 | | - tooltip: {}, |
423 | | - series: { |
424 | | - nodeClick: false, |
425 | | - type: "sunburst", |
426 | | - radius: [60, "90%"], |
427 | | - itemStyle: { |
428 | | - borderRadius: 7, |
429 | | - borderWidth: 2, |
430 | | - }, |
431 | | - data: [ |
432 | | - { |
433 | | - name: "<<.FRONTEND_LABEL>>", |
434 | | - value: Math.round(<<.FRONTEND>> * 10) / 10, |
435 | | - children:[ |
436 | | - { |
437 | | - name: "<<.FETCHBANDWIDTH_LABEL>>", |
438 | | - value: Math.round(<<.FETCHBANDWIDTH>> * 10) / 10, |
439 | | - }, |
440 | | - { |
441 | | - name: "<<.FETCHLATENCY_LABEL>>", |
442 | | - value: Math.round(<<.FETCHLATENCY>> * 10) / 10, |
443 | | - }, |
444 | | - ] |
445 | | - }, |
446 | | - { |
447 | | - name: "<<.BADSPECULATION_LABEL>>", |
448 | | - value: Math.round(<<.BADSPECULATION>> * 10) / 10, |
449 | | - children: [ |
450 | | - { |
451 | | - name: "<<.BRANCHMISPREDICTS_LABEL>>", |
452 | | - value: Math.round(<<.BRANCHMISPREDICTS>> * 10) / 10, |
453 | | - }, |
454 | | - { |
455 | | - name: "<<.MACHINECLEARS_LABEL>>", |
456 | | - value: Math.round(<<.MACHINECLEARS>> * 10) / 10, |
457 | | - }, |
458 | | - ] |
459 | | - }, |
460 | | - { |
461 | | - name: "<<.BACKEND_LABEL>>", |
462 | | - value: Math.round(<<.BACKEND>> * 10) / 10, |
463 | | - children: [ |
464 | | - { |
465 | | - name: "<<.CORE_LABEL>>", |
466 | | - value: Math.round(<<.COREDATA>> * 10) / 10, |
467 | | - }, |
468 | | - { |
469 | | - name: "<<.MEMORY_LABEL>>", |
470 | | - value: Math.round(<<.MEMORY>> * 10) / 10, |
471 | | - }, |
472 | | - ], |
473 | | - }, |
474 | | - { |
475 | | - name: "<<.RETIRING_LABEL>>", |
476 | | - value: Math.round(<<.RETIRING>> * 10) / 10, |
477 | | - children: [ |
478 | | - { |
479 | | - name: "<<.LIGHTOPS_LABEL>>", |
480 | | - value: Math.round(<<.LIGHTOPS>> * 10) / 10, |
481 | | - }, |
482 | | - { |
483 | | - name: "<<.HEAVYOPS_LABEL>>", |
484 | | - value: Math.round(<<.HEAVYOPS>> * 10) / 10, |
485 | | - }, |
486 | | - ] |
487 | | - }, |
488 | | - ], |
489 | | - radius: [20, "100%"], |
490 | | - label: { |
491 | | - rotate: "radial", |
492 | | - }, |
493 | | - }, |
494 | | - }} /> |
| 541 | + <ReactECharts style={{ minHeight: "400px" }} option={tmasunburst} /> |
495 | 542 | </Grid> |
496 | 543 | </Grid> |
497 | 544 | <Grid container> |
|
575 | 622 | Remote DRAM reads % |
576 | 623 | </Typography> |
577 | 624 | <Typography variant="body1"> |
578 | | - The memory reads that miss the last level cache (LLC) and are addressed to another socket's DRAM (remote DRAM) as a percentage of total memory read accesses. This does not include LLC prefetches. |
| 625 | + The memory reads that miss the last level cache (LLC) and are addressed to remote DRAM as a percentage of total memory read accesses. This does not include LLC prefetches. |
579 | 626 | </Typography> |
580 | 627 | </Grid> |
581 | 628 | <Grid item xs={7}> |
|
588 | 635 | Cache MPI (misses per instruction) |
589 | 636 | </Typography> |
590 | 637 | <Typography variant="body1"> |
591 | | - The ratio of the number of requests missing cache to the total number of completed instructions, at each level of cache (L1, L2 and LLC) |
| 638 | + The ratio of the number of requests missing cache to the total number of completed instructions, at each level of cache (L1d, L2 and LLC) |
592 | 639 | </Typography> |
593 | 640 | </Grid> |
594 | 641 | <Grid item xs={7}> |
|
0 commit comments