From d85886890127a9908fd8bd2649579dc25261ada2 Mon Sep 17 00:00:00 2001 From: Jan Eitzinger Date: Thu, 6 Apr 2023 18:09:36 +0200 Subject: [PATCH] Fine tune schema and job archive migration --- pkg/archive/fsBackend.go | 8 ++++---- pkg/schema/cluster.go | 14 +++++++++++++- pkg/schema/schemas/job-data.schema.json | 2 +- pkg/schema/schemas/unit.schema.json | 1 - tools/archive-manager/main.go | 1 + tools/archive-migration/main.go | 24 ++++++++++++++++-------- 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/pkg/archive/fsBackend.go b/pkg/archive/fsBackend.go index 67e82c4..63ce073 100644 --- a/pkg/archive/fsBackend.go +++ b/pkg/archive/fsBackend.go @@ -172,11 +172,11 @@ func (fsa *FsArchive) LoadClusterCfg(name string) (*schema.Cluster, error) { log.Errorf("fsBackend LoadClusterCfg()- %v", err) return &schema.Cluster{}, err } - if config.Keys.Validate { - if err := schema.Validate(schema.ClusterCfg, bytes.NewReader(b)); err != nil { - return &schema.Cluster{}, fmt.Errorf("validate cluster config: %v", err) - } + // if config.Keys.Validate { + if err := schema.Validate(schema.ClusterCfg, bytes.NewReader(b)); err != nil { + return &schema.Cluster{}, fmt.Errorf("validate cluster config: %v", err) } + // } return DecodeCluster(bytes.NewReader(b)) } diff --git a/pkg/schema/cluster.go b/pkg/schema/cluster.go index 4a8671a..0724ada 100644 --- a/pkg/schema/cluster.go +++ b/pkg/schema/cluster.go @@ -4,7 +4,10 @@ // license that can be found in the LICENSE file. package schema -import "strconv" +import ( + "fmt" + "strconv" +) type Accelerator struct { ID string `json:"id"` @@ -157,6 +160,15 @@ func (topo *Topology) GetMemoryDomainsFromHWThreads( return memDoms, exclusive } +// Temporary fix to convert back from int id to string id for accelerators +func (topo *Topology) GetAcceleratorID(id int) (string, error) { + if id < len(topo.Accelerators) { + return topo.Accelerators[id].ID, nil + } else { + return "", fmt.Errorf("Index %d out of range", id) + } +} + func (topo *Topology) GetAcceleratorIDs() ([]int, error) { accels := make([]int, 0) for _, accel := range topo.Accelerators { diff --git a/pkg/schema/schemas/job-data.schema.json b/pkg/schema/schemas/job-data.schema.json index a6e4811..1c8d94a 100644 --- a/pkg/schema/schemas/job-data.schema.json +++ b/pkg/schema/schemas/job-data.schema.json @@ -479,7 +479,7 @@ ] }, "required": [ - "cpu_used", + "cpu_user", "mem_used", "flops_any", "mem_bw", diff --git a/pkg/schema/schemas/unit.schema.json b/pkg/schema/schemas/unit.schema.json index c5bad7e..9ee781c 100644 --- a/pkg/schema/schemas/unit.schema.json +++ b/pkg/schema/schemas/unit.schema.json @@ -15,7 +15,6 @@ "F/s", "CPI", "IPC", - "load", "Hz", "W", "°C", diff --git a/tools/archive-manager/main.go b/tools/archive-manager/main.go index ea1824c..087204c 100644 --- a/tools/archive-manager/main.go +++ b/tools/archive-manager/main.go @@ -23,6 +23,7 @@ func main() { archiveCfg := fmt.Sprintf("{\"kind\": \"file\",\"path\": \"%s\"}", srcPath) config.Init(flagConfigFile) + config.Keys.Validate = true if err := archive.Init(json.RawMessage(archiveCfg)); err != nil { log.Fatal(err) diff --git a/tools/archive-migration/main.go b/tools/archive-migration/main.go index 6a37f4a..fce3813 100644 --- a/tools/archive-migration/main.go +++ b/tools/archive-migration/main.go @@ -102,7 +102,7 @@ func deepCopyJobMeta(j *JobMeta) schema.JobMeta { return jn } -func deepCopyJobData(d *JobData) *schema.JobData { +func deepCopyJobData(d *JobData, cluster string, subCluster string) *schema.JobData { var dn = make(schema.JobData) for k, v := range *d { @@ -126,7 +126,19 @@ func deepCopyJobData(d *JobData) *schema.JobData { sn.Hostname = v.Hostname if v.Id != nil { var id = new(string) - *id = fmt.Sprint(*v.Id) + + if mk == schema.MetricScopeAccelerator { + s := GetSubCluster(cluster, subCluster) + var err error + + *id, err = s.Topology.GetAcceleratorID(*v.Id) + if err != nil { + log.Fatal(err) + } + + } else { + *id = fmt.Sprint(*v.Id) + } sn.Id = id } if v.Statistics != nil { @@ -156,11 +168,7 @@ func deepCopyClusterConfig(co *Cluster) schema.Cluster { for _, sco := range co.SubClusters { var scn schema.SubCluster scn.Name = sco.Name - if sco.Nodes == "" { - scn.Nodes = "*" - } else { - scn.Nodes = sco.Nodes - } + scn.Nodes = sco.Nodes scn.ProcessorType = sco.ProcessorType scn.SocketsPerNode = sco.SocketsPerNode scn.CoresPerSocket = sco.CoresPerSocket @@ -295,7 +303,7 @@ func main() { if err != nil { log.Fatal(err) } - jdn := deepCopyJobData(jd) + jdn := deepCopyJobData(jd, job.Cluster, job.SubCluster) if err := EncodeJobData(f, jdn); err != nil { log.Fatal(err) }