diff --git a/web/frontend/src/DashPublic.root.svelte b/web/frontend/src/DashPublic.root.svelte index 5706b705..c758ed37 100644 --- a/web/frontend/src/DashPublic.root.svelte +++ b/web/frontend/src/DashPublic.root.svelte @@ -348,282 +348,288 @@ - - - + + + { + from = new Date(Date.now() - 5 * 60 * 1000); + to = new Date(Date.now()); + clusterFrom = new Date(Date.now() - (8 * 60 * 60 * 1000)) + + if (interval) stackedFrom += Math.floor(interval / 1000); + else stackedFrom += 1 // Workaround: TimeSelection not linked, just trigger new data on manual refresh + }} + /> + + + +{#if $statusQuery.fetching || $statesTimed.fetching} + + + + + + +{:else if $statusQuery.error || $statesTimed.error} + + + + + + + {#if $statusQuery.error} - { - from = new Date(Date.now() - 5 * 60 * 1000); - to = new Date(Date.now()); - clusterFrom = new Date(Date.now() - (8 * 60 * 60 * 1000)) - - if (interval) stackedFrom += Math.floor(interval / 1000); - else stackedFrom += 1 // Workaround: TimeSelection not linked, just trigger new data on manual refresh - }} - /> + Error Requesting Status Data: {$statusQuery.error.message} - - {#if $statusQuery.fetching || $statesTimed.fetching} - - - - - + {/if} + {#if $statesTimed.error} + + Error Requesting Node Scheduler States: {$statesTimed.error.message} + + {/if} + - {:else if $statusQuery.error || $statesTimed.error} - - - - - - - {#if $statusQuery.error} - - Error Requesting Status Data: {$statusQuery.error.message} - - {/if} - {#if $statesTimed.error} - - Error Requesting Node Scheduler States: {$statesTimed.error.message} - - {/if} - - - {:else} - - - - - - -

Cluster {presetCluster.charAt(0).toUpperCase() + presetCluster.slice(1)}

- - - - -
-
- -

CPU(s)

{[...clusterInfo?.processorTypes].join(', ')}

-
-
- - - +{:else} + +
+ + - - - - - {clusterInfo?.runningJobs} - -
- Running Jobs -
- - - - {clusterInfo?.activeUsers} - -
- Active Users -
- - - - {clusterInfo?.allocatedNodes} - -
- Active Nodes -
- -
- + + + +

Cluster {presetCluster.charAt(0).toUpperCase() + presetCluster.slice(1)}

+ + + + +
+
+ +

CPU(s)

{[...clusterInfo?.processorTypes].join(', ')}

+
+
+ + + + + + + + + {clusterInfo?.runningJobs} + +
+ Running Jobs +
+ + + + {clusterInfo?.activeUsers} + +
+ Active Users +
+ + + + {clusterInfo?.allocatedNodes} + +
+ Active Nodes +
+ +
+ + + + {clusterInfo?.flopRate} {clusterInfo?.flopRateUnit} + +
+ Total Flop Rate +
+ + + + {clusterInfo?.memBwRate} {clusterInfo?.memBwRateUnit} + +
+ Total Memory Bandwidth +
+ + {#if clusterInfo?.totalAccs !== 0} - {clusterInfo?.flopRate} {clusterInfo?.flopRateUnit} + {clusterInfo?.gpuPwr} {clusterInfo?.gpuPwrUnit}
- Total Flop Rate + Total GPU Power
+ {:else} - {clusterInfo?.memBwRate} {clusterInfo?.memBwRateUnit} + {clusterInfo?.cpuPwr} {clusterInfo?.cpuPwrUnit}
- Total Memory Bandwidth + Total CPU Power
- {#if clusterInfo?.totalAccs !== 0} - - - {clusterInfo?.gpuPwr} {clusterInfo?.gpuPwrUnit} - -
- Total GPU Power -
- - {:else} - - - {clusterInfo?.cpuPwr} {clusterInfo?.cpuPwrUnit} - -
- Total CPU Power -
- - {/if} -
+ {/if} +
+ + + Active Cores + + + + {formatNumber(clusterInfo?.allocatedCores)} + {formatNumber(clusterInfo?.idleCores)} + + + + Idle Cores + + + {#if clusterInfo?.totalAccs !== 0} - Active Cores + Active GPU - - {formatNumber(clusterInfo?.allocatedCores)} - {formatNumber(clusterInfo?.idleCores)} + + {formatNumber(clusterInfo?.allocatedAccs)} + {formatNumber(clusterInfo?.idleAccs)} - Idle Cores + Idle GPU - {#if clusterInfo?.totalAccs !== 0} - - - Active GPU - - - - {formatNumber(clusterInfo?.allocatedAccs)} - {formatNumber(clusterInfo?.idleAccs)} - - - - Idle GPU - - - {/if} - - - - - - -
- Cluster Utilization ( - - {`${$statusQuery?.data?.clusterMetrics?.metrics[0]?.name} (${$statusQuery?.data?.clusterMetrics?.metrics[0]?.unit?.prefix}${$statusQuery?.data?.clusterMetrics?.metrics[0]?.unit?.base})`} - , - - {`${$statusQuery?.data?.clusterMetrics?.metrics[1]?.name} (${$statusQuery?.data?.clusterMetrics?.metrics[1]?.unit?.prefix}${$statusQuery?.data?.clusterMetrics?.metrics[1]?.unit?.base})`} - - ) -
-
- {#key $statusQuery?.data?.clusterMetrics} - - {/key} -
- - - -
- {#key $statusQuery?.data?.nodeMetrics} - - {/key} -
- - - - {#if refinedStateData.length > 0} - -
- {#key refinedStateData} - sd.count, - )} - entities={refinedStateData.map( - (sd) => sd.state, - )} - fixColors={refinedStateData.map( - (sd) => colors['nodeStates'][sd.state], - )} - /> - {/key} -
- - - {#key refinedStateData} - - - - - - - {#each refinedStateData as sd, i} - - - - - - {/each} -
StateCount
{sd.state.charAt(0).toUpperCase() + sd.state.slice(1)}{sd.count}
- {/key} - - {:else} - - Cannot render state status: No state data returned for Pie Chart - {/if} -
- + + + + - -
- {#key $statesTimed?.data?.nodeStatesTimed} - - {/key} -
- - - {/if} - - + + + +
+ Cluster Utilization ( + + {`${$statusQuery?.data?.clusterMetrics?.metrics[0]?.name} (${$statusQuery?.data?.clusterMetrics?.metrics[0]?.unit?.prefix}${$statusQuery?.data?.clusterMetrics?.metrics[0]?.unit?.base})`} + , + + {`${$statusQuery?.data?.clusterMetrics?.metrics[1]?.name} (${$statusQuery?.data?.clusterMetrics?.metrics[1]?.unit?.prefix}${$statusQuery?.data?.clusterMetrics?.metrics[1]?.unit?.base})`} + + ) +
+
+ {#key $statusQuery?.data?.clusterMetrics} + + {/key} +
+ + + +
+ {#key $statusQuery?.data?.nodeMetrics} + + {/key} +
+ +
+ + + + + {#if refinedStateData.length > 0} + +
+ {#key refinedStateData} + sd.count, + )} + entities={refinedStateData.map( + (sd) => sd.state, + )} + fixColors={refinedStateData.map( + (sd) => colors['nodeStates'][sd.state], + )} + /> + {/key} +
+ + + {#key refinedStateData} + + + + + + + {#each refinedStateData as sd, i} + + + + + + {/each} +
StateCount
{sd.state.charAt(0).toUpperCase() + sd.state.slice(1)}{sd.count}
+ {/key} + + {:else} + + Cannot render state status: No state data returned for Pie Chart + + {/if} +
+ + + +
+ {#key $statesTimed?.data?.nodeStatesTimed} + + {/key} +
+ +
+
+{/if}