From 46baa6e53400e37b9dbd940fbb784e0896393841 Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Wed, 28 Sep 2022 16:13:46 +0200 Subject: [PATCH] First optical layout Iteration --- web/frontend/src/Status.root.svelte | 148 ++++++++++++++++------------ 1 file changed, 86 insertions(+), 62 deletions(-) diff --git a/web/frontend/src/Status.root.svelte b/web/frontend/src/Status.root.svelte index 26842c8..573914d 100644 --- a/web/frontend/src/Status.root.svelte +++ b/web/frontend/src/Status.root.svelte @@ -2,7 +2,7 @@ import Refresher from './joblist/Refresher.svelte' import Roofline, { transformPerNodeData } from './plots/Roofline.svelte' import Histogram from './plots/Histogram.svelte' - import { Row, Col, Spinner, Card, Table, Progress } from 'sveltestrap' + import { Row, Col, Spinner, Card, CardHeader, CardTitle, CardBody, Table, Progress, Icon } from 'sveltestrap' import { init } from './utils.js' import { operationStore, query } from '@urql/svelte' @@ -60,7 +60,12 @@ query(mainQuery) + + + +

Current usage of cluster "{cluster}"

+ {#if $initq.fetching || $mainQuery.fetching} @@ -89,54 +94,71 @@
{/if} + +
+ + + {#if $initq.data && $mainQuery.data} {#each $initq.data.clusters.find(c => c.name == cluster).subClusters as subCluster, i} - - - - - - - - - - - - - - - - - - - - - - -
SubCluster{subCluster.name}
Allocated Nodes
({allocatedNodes[subCluster.name]} / {subCluster.numberOfNodes})
Flop Rate
({flopRate[subCluster.name]} / {subCluster.flopRateSimd * subCluster.numberOfNodes})
MemBw Rate
({memBwRate[subCluster.name]} / {subCluster.memoryBandwidth * subCluster.numberOfNodes})
+ + + + + SubCluster "{subCluster.name}" + + + + + + + + + + + + + + + + + + +
Allocated Nodes
({allocatedNodes[subCluster.name]} / {subCluster.numberOfNodes})
Flop Rate (Any)
({flopRate[subCluster.name]} / {subCluster.flopRateSimd * subCluster.numberOfNodes})
MemBw Rate
({memBwRate[subCluster.name]} / {subCluster.memoryBandwidth * subCluster.numberOfNodes})
+
+
+ + +
+ {#key $mainQuery.data.nodeMetrics} + data.subCluster == subCluster.name))} /> + {/key} +
-
- {#key $mainQuery.data.nodeMetrics} - data.subCluster == subCluster.name))} /> - {/key} -
{/each} - -
-

Top Users

- {#key $mainQuery.data} - b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))} - label={(x) => x < $mainQuery.data.topUsers.length ? $mainQuery.data.topUsers[Math.floor(x)].name : '0'} /> - {/key} -
-
+ +
+ + + + + +
+

Top Users

+ {#key $mainQuery.data} + b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))} + label={(x) => x < $mainQuery.data.topUsers.length ? $mainQuery.data.topUsers[Math.floor(x)].name : '0'} /> + {/key} +
+ + - + {#each $mainQuery.data.topUsers.sort((a, b) => b.count - a.count) as { name, count }} @@ -144,41 +166,43 @@ {/each}
NameNumber of Nodes
User NameNumber of Nodes
{name}
-
-
-

Top Projects

+ + +

Top Projects

{#key $mainQuery.data} b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))} label={(x) => x < $mainQuery.data.topProjects.length ? $mainQuery.data.topProjects[Math.floor(x)].name : '0'} /> {/key} -
-
+ + - + {#each $mainQuery.data.topProjects.sort((a, b) => b.count - a.count) as { name, count }} {/each}
NameNumber of Nodes
Project CodeNumber of Nodes
{name}{count}
-
+
- -
-

Duration Distribution

- {#key $mainQuery.data.stats} - - {/key} -
-
-

Number of Nodes Distribution

+ + +
+

Duration Distribution

+ {#key $mainQuery.data.stats} + + {/key} +
+ + +

Number of Nodes Distribution

{#key $mainQuery.data.stats} {/key} -
+
{/if}