From 58e678d72c356cf4e93fd6cf18d6bdb0220c067b Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Mon, 17 Feb 2025 18:24:28 +0100 Subject: [PATCH] fix: load jobView roofline on finest resolution separately by default, see #339 --- internal/metricdata/cc-metric-store.go | 2 +- web/frontend/src/Job.root.svelte | 33 ++++++++++++++++++++------ web/frontend/src/Status.root.svelte | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/internal/metricdata/cc-metric-store.go b/internal/metricdata/cc-metric-store.go index f3ee55f..2b92fbb 100644 --- a/internal/metricdata/cc-metric-store.go +++ b/internal/metricdata/cc-metric-store.go @@ -644,7 +644,7 @@ func (ccms *CCMetricStore) LoadNodeData( req.Queries = append(req.Queries, ApiQuery{ Hostname: node, Metric: ccms.toRemoteName(metric), - Resolution: 60, // Default for Node Queries + Resolution: 0, // Default for Node Queries: Will return metric $Timestep Resolution }) } } diff --git a/web/frontend/src/Job.root.svelte b/web/frontend/src/Job.root.svelte index 086f25c..aa5b9fd 100644 --- a/web/frontend/src/Job.root.svelte +++ b/web/frontend/src/Job.root.svelte @@ -117,20 +117,39 @@ } `; +const roofQuery = gql` + query ($dbid: ID!, $selectedMetrics: [String!]!, $selectedScopes: [MetricScope!]!, $selectedResolution: Int) { + jobMetrics(id: $dbid, metrics: $selectedMetrics, scopes: $selectedScopes, resolution: $selectedResolution) { + name + scope + metric { + series { + data + } + } + } + } + `; + $: jobMetrics = queryStore({ client: client, query: query, variables: { dbid, selectedMetrics, selectedScopes }, }); + // Roofline: Always load roofMetrics with configured timestep (Resolution: 0) + $: roofMetrics = queryStore({ + client: client, + query: roofQuery, + variables: { dbid, selectedMetrics: ["flops_any", "mem_bw"], selectedScopes: ["node"], selectedResolution: 0 }, + }); + // Handle Job Query on Init -> is not executed anymore getContext("on-init")(() => { let job = $initq.data.job; if (!job) return; const pendingMetrics = [ - "flops_any", - "mem_bw", ...(ccconfig[`job_view_selectedMetrics:${job.cluster}`] || $initq.data.globalMetrics.reduce((names, gm) => { if (gm.availability.find((av) => av.cluster === job.cluster)) { @@ -276,12 +295,12 @@ - {#if $initq.error || $jobMetrics.error} + {#if $initq.error || $roofMetrics.error}

Initq Error: {$initq.error?.message}

-

jobMetrics Error: {$jobMetrics.error?.message}

+

roofMetrics (jobMetrics) Error: {$roofMetrics.error?.message}

- {:else if $initq?.data && $jobMetrics?.data} + {:else if $initq?.data && $roofMetrics?.data}
c.name == $initq.data.job.cluster) .subClusters.find((sc) => sc.name == $initq.data.job.subCluster)} data={transformDataForRoofline( - $jobMetrics.data?.jobMetrics?.find( + $roofMetrics.data?.jobMetrics?.find( (m) => m.name == "flops_any" && m.scope == "node", )?.metric, - $jobMetrics.data?.jobMetrics?.find( + $roofMetrics.data?.jobMetrics?.find( (m) => m.name == "mem_bw" && m.scope == "node", )?.metric, )} diff --git a/web/frontend/src/Status.root.svelte b/web/frontend/src/Status.root.svelte index f34b98b..a44a962 100644 --- a/web/frontend/src/Status.root.svelte +++ b/web/frontend/src/Status.root.svelte @@ -80,6 +80,7 @@ : ccconfig.user_view_histogramMetrics || []; const client = getContextClient(); + // Note: nodeMetrics are requested on configured $timestep resolution $: mainQuery = queryStore({ client: client, query: gql`