mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-11-01 08:15:07 +01:00
Add tests and testdata for S3 backend
This commit is contained in:
@@ -509,5 +509,6 @@ func (fsa *FsArchive) ImportJob(
|
|||||||
if err := f.Close(); err != nil {
|
if err := f.Close(); err != nil {
|
||||||
log.Warn("Error while closing data.json file")
|
log.Warn("Error while closing data.json file")
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,6 +227,94 @@ func (s3a *S3Archive) LoadClusterCfg(name string) (*schema.Cluster, error) {
|
|||||||
return DecodeCluster(r)
|
return DecodeCluster(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s3a *S3Archive) Iter(loadMetricData bool) <-chan JobContainer {
|
||||||
|
ch := make(chan JobContainer)
|
||||||
|
go func() {
|
||||||
|
clusterDirs := s3a.client.ListObjects(context.Background(), s3a.bucket, minio.ListObjectsOptions{Recursive: false})
|
||||||
|
|
||||||
|
for clusterDir := range clusterDirs {
|
||||||
|
if clusterDir.Err != nil {
|
||||||
|
fmt.Println(clusterDir.Err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(clusterDir.Key)
|
||||||
|
if clusterDir.Size != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
key := filepath.Join("", clusterDir.Key)
|
||||||
|
fmt.Println(key)
|
||||||
|
|
||||||
|
lvl1Dirs := s3a.client.ListObjects(context.Background(), s3a.bucket, minio.ListObjectsOptions{Recursive: false, Prefix: key})
|
||||||
|
for lvl1Dir := range lvl1Dirs {
|
||||||
|
fmt.Println(lvl1Dir.Key)
|
||||||
|
|
||||||
|
ch <- JobContainer{Meta: nil, Data: nil}
|
||||||
|
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// for _, lvl1Dir := range lvl1Dirs {
|
||||||
|
// if !lvl1Dir.IsDir() {
|
||||||
|
// // Could be the cluster.json file
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// lvl2Dirs, err := os.ReadDir(filepath.Join(fsa.path, clusterDir.Name(), lvl1Dir.Name()))
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatalf("Reading jobs failed @ lvl2 dirs: %s", err.Error())
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// for _, lvl2Dir := range lvl2Dirs {
|
||||||
|
// dirpath := filepath.Join(fsa.path, clusterDir.Name(), lvl1Dir.Name(), lvl2Dir.Name())
|
||||||
|
// startTimeDirs, err := os.ReadDir(dirpath)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatalf("Reading jobs failed @ starttime dirs: %s", err.Error())
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// for _, startTimeDir := range startTimeDirs {
|
||||||
|
// if startTimeDir.IsDir() {
|
||||||
|
// b, err := os.ReadFile(filepath.Join(dirpath, startTimeDir.Name(), "meta.json"))
|
||||||
|
// if err != nil {
|
||||||
|
// log.Errorf("loadJobMeta() > open file error: %v", err)
|
||||||
|
// }
|
||||||
|
// job, err := loadJobMeta(b)
|
||||||
|
// if err != nil && !errors.Is(err, &jsonschema.ValidationError{}) {
|
||||||
|
// log.Errorf("in %s: %s", filepath.Join(dirpath, startTimeDir.Name()), err.Error())
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if loadMetricData {
|
||||||
|
// var isCompressed bool = true
|
||||||
|
// filename := filepath.Join(dirpath, startTimeDir.Name(), "data.json.gz")
|
||||||
|
//
|
||||||
|
// if !util.CheckFileExists(filename) {
|
||||||
|
// filename = filepath.Join(dirpath, startTimeDir.Name(), "data.json")
|
||||||
|
// isCompressed = false
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// f, err := os.Open(filename)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Errorf("fsBackend LoadJobData()- %v", err)
|
||||||
|
// }
|
||||||
|
// defer f.Close()
|
||||||
|
//
|
||||||
|
// data, err := loadJobData(f, filename, isCompressed)
|
||||||
|
// if err != nil && !errors.Is(err, &jsonschema.ValidationError{}) {
|
||||||
|
// log.Errorf("in %s: %s", filepath.Join(dirpath, startTimeDir.Name()), err.Error())
|
||||||
|
// }
|
||||||
|
// ch <- JobContainer{Meta: job, Data: &data}
|
||||||
|
// log.Errorf("in %s: %s", filepath.Join(dirpath, startTimeDir.Name()), err.Error())
|
||||||
|
// } else {
|
||||||
|
// ch <- JobContainer{Meta: job, Data: nil}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
close(ch)
|
||||||
|
}()
|
||||||
|
return ch
|
||||||
|
}
|
||||||
|
|
||||||
func (s3a *S3Archive) ImportJob(
|
func (s3a *S3Archive) ImportJob(
|
||||||
jobMeta *schema.JobMeta,
|
jobMeta *schema.JobMeta,
|
||||||
jobData *schema.JobData,
|
jobData *schema.JobData,
|
||||||
@@ -239,36 +327,37 @@ func (s3a *S3Archive) ImportJob(
|
|||||||
|
|
||||||
r, w := io.Pipe()
|
r, w := io.Pipe()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
defer w.Close()
|
||||||
if err := EncodeJobMeta(w, jobMeta); err != nil {
|
if err := EncodeJobMeta(w, jobMeta); err != nil {
|
||||||
log.Error("Error while encoding job metadata to meta.json file")
|
log.Error("Error while encoding job metadata to meta.json object")
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
key := getPath(&job, "./", "meta.json")
|
key := getPath(&job, "./", "meta.json")
|
||||||
s3a.client.PutObject(context.Background(),
|
_, e := s3a.client.PutObject(context.Background(),
|
||||||
s3a.bucket, key, r,
|
s3a.bucket, key, r, -1, minio.PutObjectOptions{})
|
||||||
int64(unsafe.Sizeof(job)), minio.PutObjectOptions{})
|
|
||||||
|
|
||||||
if err := w.Close(); err != nil {
|
if e != nil {
|
||||||
log.Warn("Error while closing meta.json file")
|
log.Errorf("Put error %#v", e)
|
||||||
return err
|
return e
|
||||||
}
|
}
|
||||||
|
r, w = io.Pipe()
|
||||||
|
|
||||||
//
|
go func() {
|
||||||
// f, err = os.Create(path.Join(dir, "data.json"))
|
defer w.Close()
|
||||||
// if err != nil {
|
if err := EncodeJobData(w, jobData); err != nil {
|
||||||
// log.Error("Error while creating filepath for data.json")
|
log.Error("Error while encoding job metricdata to data.json object")
|
||||||
// return err
|
}
|
||||||
// }
|
}()
|
||||||
// if err := EncodeJobData(f, jobData); err != nil {
|
|
||||||
// log.Error("Error while encoding job metricdata to data.json file")
|
key = getPath(&job, "./", "data.json")
|
||||||
// return err
|
_, e = s3a.client.PutObject(context.Background(),
|
||||||
// }
|
s3a.bucket, key, r, -1, minio.PutObjectOptions{})
|
||||||
// if err := f.Close(); err != nil {
|
if e != nil {
|
||||||
// log.Warn("Error while closing data.json file")
|
log.Errorf("Put error %#v", e)
|
||||||
// }
|
return e
|
||||||
// return err
|
}
|
||||||
//
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -315,4 +404,3 @@ func (s3a *S3Archive) GetClusters() []string {
|
|||||||
//
|
//
|
||||||
// func (s3a *S3Archive) CompressLast(starttime int64) int64
|
// func (s3a *S3Archive) CompressLast(starttime int64) int64
|
||||||
//
|
//
|
||||||
// func (s3a *S3Archive) Iter(loadMetricData bool) <-chan JobContainer
|
|
||||||
|
|||||||
@@ -5,7 +5,10 @@
|
|||||||
package archive
|
package archive
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -100,3 +103,51 @@ func TestS3LoadCluster(t *testing.T) {
|
|||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestS3JobImport(t *testing.T) {
|
||||||
|
var s3a S3Archive
|
||||||
|
_, err := s3a.Init(json.RawMessage("{\"endpoint\":\"192.168.1.10:9100\",\"accessKeyID\":\"uACSaCN2Chiotpnr4bBS\",\"secretAccessKey\":\"MkEbBsFvMii1K5GreUriTJZxH359B1n28Au9Kaml\",\"bucket\":\"cc-archive\",\"useSSL\":false}"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
raw, err := os.ReadFile("./testdata/archive/fritz/398/759/1675954289/meta.json")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Error while reading metadata file for import")
|
||||||
|
}
|
||||||
|
|
||||||
|
dec := json.NewDecoder(bytes.NewReader(raw))
|
||||||
|
dec.DisallowUnknownFields()
|
||||||
|
jobMeta := schema.JobMeta{BaseJob: schema.JobDefaults}
|
||||||
|
if err = dec.Decode(&jobMeta); err != nil {
|
||||||
|
t.Fatal("Error while decoding raw json metadata for import")
|
||||||
|
}
|
||||||
|
|
||||||
|
raw, err = os.ReadFile("./testdata/archive/fritz/398/759/1675954289/data.json")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal("Error while reading jobdata file for import")
|
||||||
|
}
|
||||||
|
|
||||||
|
dec = json.NewDecoder(bytes.NewReader(raw))
|
||||||
|
dec.DisallowUnknownFields()
|
||||||
|
jobData := schema.JobData{}
|
||||||
|
if err = dec.Decode(&jobData); err != nil {
|
||||||
|
t.Fatal("Error while decoding raw json jobdata for import")
|
||||||
|
}
|
||||||
|
|
||||||
|
s3a.ImportJob(&jobMeta, &jobData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestS3Iter(t *testing.T) {
|
||||||
|
var s3a S3Archive
|
||||||
|
_, err := s3a.Init(json.RawMessage("{\"endpoint\":\"192.168.1.10:9100\",\"accessKeyID\":\"uACSaCN2Chiotpnr4bBS\",\"secretAccessKey\":\"MkEbBsFvMii1K5GreUriTJZxH359B1n28Au9Kaml\",\"bucket\":\"cc-archive\",\"useSSL\":false}"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for jobContainer := range s3a.Iter(false) {
|
||||||
|
if jobContainer.Meta == nil {
|
||||||
|
fmt.Println("Is nil")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
1
pkg/archive/testdata/archive/fritz/398/759/1675954289/data.json
vendored
Normal file
1
pkg/archive/testdata/archive/fritz/398/759/1675954289/data.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
pkg/archive/testdata/archive/fritz/398/759/1675954289/meta.json
vendored
Normal file
1
pkg/archive/testdata/archive/fritz/398/759/1675954289/meta.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"jobId":398759,"user":"k106eb10","project":"k106eb","cluster":"fritz","subCluster":"main","partition":"singlenode","arrayJobId":0,"numNodes":1,"numHwthreads":72,"numAcc":0,"exclusive":1,"monitoringStatus":1,"smt":0,"jobState":"completed","duration":456,"walltime":86340,"resources":[{"hostname":"f1039"}],"metaData":{"jobName":"ams_pipeline","jobScript":"#!/bin/bash -l\n#SBATCH --job-name=ams_pipeline\n#SBATCH --time=23:59:00\n#SBATCH --partition=singlenode\n#SBATCH --ntasks=72\n#SBATCH --hint=multithread\n#SBATCH --chdir=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4\n#SBATCH --export=NONE\nunset SLURM_EXPORT_ENV\nuss=$(whoami)\nfind /dev/shm/ -user $uss -type f -mmin +30 -delete\ncd \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4\"\nams_pipeline pipeline.json \u003e \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4/ams_pipeline_job.sh.out\" 2\u003e \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4/ams_pipeline_job.sh.err\"\n","slurmInfo":"\nJobId=398759 JobName=ams_pipeline\n UserId=k106eb10(210387) GroupId=80111\n Account=k106eb QOS=normal \n Requeue=False Restarts=0 BatchFlag=True \n TimeLimit=1439\n SubmitTime=2023-02-09T14:10:18\n Partition=singlenode \n NodeList=f1039\n NumNodes=1 NumCPUs=72 NumTasks=72 CPUs/Task=1\n NTasksPerNode:Socket:Core=0:None:None\n TRES_req=cpu=72,mem=250000M,node=1,billing=72\n TRES_alloc=cpu=72,node=1,billing=72\n Command=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4/ams_pipeline_job.sh\n WorkDir=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_9_D1_3_Al4Ba/cfg/AlNi4\n StdErr=\n StdOut=ams_pipeline.o%j\n"},"startTime":1675954289,"statistics":{"clock":{"unit":{"base":"Hz","prefix":"M"},"avg":2353.432,"min":948.182,"max":2788.083},"cpu_load":{"unit":{"base":""},"avg":51.549,"min":11.01,"max":69.65},"cpu_power":{"unit":{"base":"W"},"avg":341.035,"min":97.175,"max":504.194},"cpu_user":{"unit":{"base":""},"avg":67.956,"min":0.07,"max":96.219},"flops_any":{"unit":{"base":"F/s","prefix":"G"},"avg":232.513,"min":0,"max":410.287},"flops_dp":{"unit":{"base":"F/s","prefix":"G"},"avg":116.255,"min":0,"max":205.143},"flops_sp":{"unit":{"base":"F/s","prefix":"G"},"avg":0.003,"min":0,"max":0.009},"ib_recv":{"unit":{"base":"B/s"},"avg":22674.825,"min":39.601,"max":47259.522},"ib_recv_pkts":{"unit":{"base":"packets/s"},"avg":321.484,"min":0.2,"max":680.887},"ib_xmit":{"unit":{"base":"B/s"},"avg":140.208,"min":39.601,"max":576.666},"ib_xmit_pkts":{"unit":{"base":"packets/s"},"avg":0.685,"min":0.2,"max":1.984},"ipc":{"unit":{"base":"IPC"},"avg":0.944,"min":0.21,"max":1.424},"mem_bw":{"unit":{"base":"B/s","prefix":"G"},"avg":39.231,"min":0.023,"max":86.676},"mem_power":{"unit":{"base":"W"},"avg":18.049,"min":7.256,"max":26.926},"mem_used":{"unit":{"base":"B","prefix":"G"},"avg":19.107,"min":3.866,"max":24.729},"nfs4_read":{"unit":{"base":"B/s","prefix":"M"},"avg":389.875,"min":0,"max":1390},"nfs4_total":{"unit":{"base":"B/s","prefix":"M"},"avg":5032.75,"min":956,"max":10098},"nfs4_write":{"unit":{"base":"B/s","prefix":"M"},"avg":21.125,"min":0,"max":41},"vectorization_ratio":{"unit":{"base":"%"},"avg":60.12,"min":0.028,"max":99.133}}}
|
||||||
BIN
pkg/archive/testdata/archive/fritz/398/760/1675954305/data.json.gz
vendored
Normal file
BIN
pkg/archive/testdata/archive/fritz/398/760/1675954305/data.json.gz
vendored
Normal file
Binary file not shown.
1
pkg/archive/testdata/archive/fritz/398/760/1675954305/meta.json
vendored
Normal file
1
pkg/archive/testdata/archive/fritz/398/760/1675954305/meta.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"jobId":398760,"user":"k106eb10","project":"k106eb","cluster":"fritz","subCluster":"main","partition":"singlenode","arrayJobId":0,"numNodes":1,"numHwthreads":72,"numAcc":0,"exclusive":1,"monitoringStatus":1,"smt":0,"jobState":"completed","duration":424,"walltime":86340,"resources":[{"hostname":"f0726"}],"metaData":{"jobName":"ams_pipeline","jobScript":"#!/bin/bash -l\n#SBATCH --job-name=ams_pipeline\n#SBATCH --time=23:59:00\n#SBATCH --partition=singlenode\n#SBATCH --ntasks=72\n#SBATCH --hint=multithread\n#SBATCH --chdir=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33\n#SBATCH --export=NONE\nunset SLURM_EXPORT_ENV\nuss=$(whoami)\nfind /dev/shm/ -user $uss -type f -mmin +30 -delete\ncd \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33\"\nams_pipeline pipeline.json \u003e \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33/ams_pipeline_job.sh.out\" 2\u003e \"/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33/ams_pipeline_job.sh.err\"\n","slurmInfo":"\nJobId=398760 JobName=ams_pipeline\n UserId=k106eb10(210387) GroupId=80111\n Account=k106eb QOS=normal \n Requeue=False Restarts=0 BatchFlag=True \n TimeLimit=1439\n SubmitTime=2023-02-09T14:10:18\n Partition=singlenode \n NodeList=f0726\n NumNodes=1 NumCPUs=72 NumTasks=72 CPUs/Task=1\n NTasksPerNode:Socket:Core=0:None:None\n TRES_req=cpu=72,mem=250000M,node=1,billing=72\n TRES_alloc=cpu=72,node=1,billing=72\n Command=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33/ams_pipeline_job.sh\n WorkDir=/home/atuin/k106eb/k106eb10/ACE/Ni-Al/DFT/VASP_PBE_500_0.125_0.1_NM/AlNi/binaries/bulk/moreprototypesYury/gen_58_D2_e_BaHg11/cfg/Ni3Al33\n StdErr=\n StdOut=ams_pipeline.o%j\n"},"startTime":1675954305,"statistics":{"clock":{"unit":{"base":"Hz","prefix":"M"},"avg":2080.276,"min":177.875,"max":2999.808},"cpu_load":{"unit":{"base":""},"avg":51.85,"min":17.55,"max":70.19},"cpu_power":{"unit":{"base":"W"},"avg":895207.403,"min":99.623,"max":5813238.184},"cpu_user":{"unit":{"base":""},"avg":69.514,"min":0.141,"max":95.954},"flops_any":{"unit":{"base":"F/s","prefix":"G"},"avg":449583.761,"min":0,"max":3594180.285},"flops_dp":{"unit":{"base":"F/s","prefix":"G"},"avg":224791.879,"min":0,"max":1797090.142},"flops_sp":{"unit":{"base":"F/s","prefix":"G"},"avg":0.004,"min":0,"max":0.009},"ib_recv":{"unit":{"base":"B/s"},"avg":22280.656,"min":39.602,"max":48063.992},"ib_recv_pkts":{"unit":{"base":"packets/s"},"avg":315.311,"min":0.2,"max":685.046},"ib_xmit":{"unit":{"base":"B/s"},"avg":139.722,"min":39.131,"max":568.239},"ib_xmit_pkts":{"unit":{"base":"packets/s"},"avg":0.685,"min":0.183,"max":2.167},"ipc":{"unit":{"base":"IPC"},"avg":0.693,"min":0.169,"max":0.871},"mem_bw":{"unit":{"base":"B/s","prefix":"G"},"avg":277555.465,"min":0.023,"max":2219018.206},"mem_power":{"unit":{"base":"W"},"avg":73514.92,"min":7.599,"max":485466.144},"mem_used":{"unit":{"base":"B","prefix":"G"},"avg":12.971,"min":3.973,"max":21.517},"nfs4_read":{"unit":{"base":"B/s","prefix":"M"},"avg":413.25,"min":0,"max":1730},"nfs4_total":{"unit":{"base":"B/s","prefix":"M"},"avg":5063.875,"min":1102,"max":10701},"nfs4_write":{"unit":{"base":"B/s","prefix":"M"},"avg":17.875,"min":1,"max":45},"vectorization_ratio":{"unit":{"base":"%"},"avg":54.299,"min":0,"max":98.808}}}
|
||||||
746
pkg/archive/testdata/archive/fritz/cluster.json
vendored
Normal file
746
pkg/archive/testdata/archive/fritz/cluster.json
vendored
Normal file
@@ -0,0 +1,746 @@
|
|||||||
|
{
|
||||||
|
"name": "fritz",
|
||||||
|
"metricConfig": [
|
||||||
|
{
|
||||||
|
"name": "cpu_load",
|
||||||
|
"unit": {
|
||||||
|
"base": ""
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "avg",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 72,
|
||||||
|
"normal": 72,
|
||||||
|
"caution": 36,
|
||||||
|
"alert": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cpu_user",
|
||||||
|
"unit": {
|
||||||
|
"base": ""
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "avg",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 100,
|
||||||
|
"normal": 50,
|
||||||
|
"caution": 20,
|
||||||
|
"alert": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mem_used",
|
||||||
|
"unit": {
|
||||||
|
"base": "B",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 256,
|
||||||
|
"normal": 128,
|
||||||
|
"caution": 200,
|
||||||
|
"alert": 240
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flops_any",
|
||||||
|
"unit": {
|
||||||
|
"base": "F/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 5600,
|
||||||
|
"normal": 1000,
|
||||||
|
"caution": 200,
|
||||||
|
"alert": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flops_sp",
|
||||||
|
"unit": {
|
||||||
|
"base": "F/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 5600,
|
||||||
|
"normal": 1000,
|
||||||
|
"caution": 200,
|
||||||
|
"alert": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flops_dp",
|
||||||
|
"unit": {
|
||||||
|
"base": "F/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 2300,
|
||||||
|
"normal": 500,
|
||||||
|
"caution": 100,
|
||||||
|
"alert": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mem_bw",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"scope": "socket",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 350,
|
||||||
|
"normal": 100,
|
||||||
|
"caution": 50,
|
||||||
|
"alert": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clock",
|
||||||
|
"unit": {
|
||||||
|
"base": "Hz",
|
||||||
|
"prefix": "M"
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "avg",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 3000,
|
||||||
|
"normal": 2400,
|
||||||
|
"caution": 1800,
|
||||||
|
"alert": 1200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cpu_power",
|
||||||
|
"unit": {
|
||||||
|
"base": "W"
|
||||||
|
},
|
||||||
|
"scope": "socket",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 500,
|
||||||
|
"normal": 250,
|
||||||
|
"caution": 100,
|
||||||
|
"alert": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mem_power",
|
||||||
|
"unit": {
|
||||||
|
"base": "W"
|
||||||
|
},
|
||||||
|
"scope": "socket",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 100,
|
||||||
|
"normal": 50,
|
||||||
|
"caution": 20,
|
||||||
|
"alert": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipc",
|
||||||
|
"unit": {
|
||||||
|
"base": "IPC"
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "avg",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 4,
|
||||||
|
"normal": 2,
|
||||||
|
"caution": 1,
|
||||||
|
"alert": 0.5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vectorization_ratio",
|
||||||
|
"unit": {
|
||||||
|
"base": ""
|
||||||
|
},
|
||||||
|
"scope": "hwthread",
|
||||||
|
"aggregation": "avg",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 100,
|
||||||
|
"normal": 60,
|
||||||
|
"caution": 40,
|
||||||
|
"alert": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ib_recv",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 1250000,
|
||||||
|
"normal": 6000000,
|
||||||
|
"caution": 200,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ib_xmit",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 1250000,
|
||||||
|
"normal": 6000000,
|
||||||
|
"caution": 200,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ib_recv_pkts",
|
||||||
|
"unit": {
|
||||||
|
"base": ""
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 6,
|
||||||
|
"normal": 4,
|
||||||
|
"caution": 2,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ib_xmit_pkts",
|
||||||
|
"unit": {
|
||||||
|
"base": ""
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 6,
|
||||||
|
"normal": 4,
|
||||||
|
"caution": 2,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nfs4_read",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s",
|
||||||
|
"prefix": "M"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 6,
|
||||||
|
"normal": 4,
|
||||||
|
"caution": 2,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nfs4_write",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s",
|
||||||
|
"prefix": "M"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 6,
|
||||||
|
"normal": 4,
|
||||||
|
"caution": 2,
|
||||||
|
"alert": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nfs4_total",
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s",
|
||||||
|
"prefix": "M"
|
||||||
|
},
|
||||||
|
"scope": "node",
|
||||||
|
"aggregation": "sum",
|
||||||
|
"timestep": 60,
|
||||||
|
"peak": 6,
|
||||||
|
"normal": 4,
|
||||||
|
"caution": 2,
|
||||||
|
"alert": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"subClusters": [
|
||||||
|
{
|
||||||
|
"name": "main",
|
||||||
|
"nodes": "f01[01-88],f02[01-88],f03[01-88],f03[01-88],f04[01-88],f05[01-88],f06[01-88],f07[01-88],f08[01-88],f09[01-88],f10[01-88],f11[01-56],f12[01-56]",
|
||||||
|
"processorType": "Intel Icelake",
|
||||||
|
"socketsPerNode": 2,
|
||||||
|
"coresPerSocket": 36,
|
||||||
|
"threadsPerCore": 1,
|
||||||
|
"flopRateScalar": {
|
||||||
|
"unit": {
|
||||||
|
"base": "F/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"value": 432
|
||||||
|
},
|
||||||
|
"flopRateSimd": {
|
||||||
|
"unit": {
|
||||||
|
"base": "F/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"value": 9216
|
||||||
|
},
|
||||||
|
"memoryBandwidth": {
|
||||||
|
"unit": {
|
||||||
|
"base": "B/s",
|
||||||
|
"prefix": "G"
|
||||||
|
},
|
||||||
|
"value": 350
|
||||||
|
},
|
||||||
|
"topology": {
|
||||||
|
"node": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35,
|
||||||
|
36,
|
||||||
|
37,
|
||||||
|
38,
|
||||||
|
39,
|
||||||
|
40,
|
||||||
|
41,
|
||||||
|
42,
|
||||||
|
43,
|
||||||
|
44,
|
||||||
|
45,
|
||||||
|
46,
|
||||||
|
47,
|
||||||
|
48,
|
||||||
|
49,
|
||||||
|
50,
|
||||||
|
51,
|
||||||
|
52,
|
||||||
|
53,
|
||||||
|
54,
|
||||||
|
55,
|
||||||
|
56,
|
||||||
|
57,
|
||||||
|
58,
|
||||||
|
59,
|
||||||
|
60,
|
||||||
|
61,
|
||||||
|
62,
|
||||||
|
63,
|
||||||
|
64,
|
||||||
|
65,
|
||||||
|
66,
|
||||||
|
67,
|
||||||
|
68,
|
||||||
|
69,
|
||||||
|
70,
|
||||||
|
71
|
||||||
|
],
|
||||||
|
"socket": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
[
|
||||||
|
36,
|
||||||
|
37,
|
||||||
|
38,
|
||||||
|
39,
|
||||||
|
40,
|
||||||
|
41,
|
||||||
|
42,
|
||||||
|
43,
|
||||||
|
44,
|
||||||
|
45,
|
||||||
|
46,
|
||||||
|
47,
|
||||||
|
48,
|
||||||
|
49,
|
||||||
|
50,
|
||||||
|
51,
|
||||||
|
52,
|
||||||
|
53,
|
||||||
|
54,
|
||||||
|
55,
|
||||||
|
56,
|
||||||
|
57,
|
||||||
|
58,
|
||||||
|
59,
|
||||||
|
60,
|
||||||
|
61,
|
||||||
|
62,
|
||||||
|
63,
|
||||||
|
64,
|
||||||
|
65,
|
||||||
|
66,
|
||||||
|
67,
|
||||||
|
68,
|
||||||
|
69,
|
||||||
|
70,
|
||||||
|
71
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"memoryDomain": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17
|
||||||
|
],
|
||||||
|
[
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
[
|
||||||
|
36,
|
||||||
|
37,
|
||||||
|
38,
|
||||||
|
39,
|
||||||
|
40,
|
||||||
|
41,
|
||||||
|
42,
|
||||||
|
43,
|
||||||
|
44,
|
||||||
|
45,
|
||||||
|
46,
|
||||||
|
47,
|
||||||
|
48,
|
||||||
|
49,
|
||||||
|
50,
|
||||||
|
51,
|
||||||
|
52,
|
||||||
|
53
|
||||||
|
],
|
||||||
|
[
|
||||||
|
54,
|
||||||
|
55,
|
||||||
|
56,
|
||||||
|
57,
|
||||||
|
58,
|
||||||
|
59,
|
||||||
|
60,
|
||||||
|
61,
|
||||||
|
62,
|
||||||
|
63,
|
||||||
|
64,
|
||||||
|
65,
|
||||||
|
66,
|
||||||
|
67,
|
||||||
|
68,
|
||||||
|
69,
|
||||||
|
70,
|
||||||
|
71
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"core": [
|
||||||
|
[
|
||||||
|
0
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4
|
||||||
|
],
|
||||||
|
[
|
||||||
|
5
|
||||||
|
],
|
||||||
|
[
|
||||||
|
6
|
||||||
|
],
|
||||||
|
[
|
||||||
|
7
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8
|
||||||
|
],
|
||||||
|
[
|
||||||
|
9
|
||||||
|
],
|
||||||
|
[
|
||||||
|
10
|
||||||
|
],
|
||||||
|
[
|
||||||
|
11
|
||||||
|
],
|
||||||
|
[
|
||||||
|
12
|
||||||
|
],
|
||||||
|
[
|
||||||
|
13
|
||||||
|
],
|
||||||
|
[
|
||||||
|
14
|
||||||
|
],
|
||||||
|
[
|
||||||
|
15
|
||||||
|
],
|
||||||
|
[
|
||||||
|
16
|
||||||
|
],
|
||||||
|
[
|
||||||
|
17
|
||||||
|
],
|
||||||
|
[
|
||||||
|
18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
19
|
||||||
|
],
|
||||||
|
[
|
||||||
|
20
|
||||||
|
],
|
||||||
|
[
|
||||||
|
21
|
||||||
|
],
|
||||||
|
[
|
||||||
|
22
|
||||||
|
],
|
||||||
|
[
|
||||||
|
23
|
||||||
|
],
|
||||||
|
[
|
||||||
|
24
|
||||||
|
],
|
||||||
|
[
|
||||||
|
25
|
||||||
|
],
|
||||||
|
[
|
||||||
|
26
|
||||||
|
],
|
||||||
|
[
|
||||||
|
27
|
||||||
|
],
|
||||||
|
[
|
||||||
|
28
|
||||||
|
],
|
||||||
|
[
|
||||||
|
29
|
||||||
|
],
|
||||||
|
[
|
||||||
|
30
|
||||||
|
],
|
||||||
|
[
|
||||||
|
31
|
||||||
|
],
|
||||||
|
[
|
||||||
|
32
|
||||||
|
],
|
||||||
|
[
|
||||||
|
33
|
||||||
|
],
|
||||||
|
[
|
||||||
|
34
|
||||||
|
],
|
||||||
|
[
|
||||||
|
35
|
||||||
|
],
|
||||||
|
[
|
||||||
|
36
|
||||||
|
],
|
||||||
|
[
|
||||||
|
37
|
||||||
|
],
|
||||||
|
[
|
||||||
|
38
|
||||||
|
],
|
||||||
|
[
|
||||||
|
39
|
||||||
|
],
|
||||||
|
[
|
||||||
|
40
|
||||||
|
],
|
||||||
|
[
|
||||||
|
41
|
||||||
|
],
|
||||||
|
[
|
||||||
|
42
|
||||||
|
],
|
||||||
|
[
|
||||||
|
43
|
||||||
|
],
|
||||||
|
[
|
||||||
|
44
|
||||||
|
],
|
||||||
|
[
|
||||||
|
45
|
||||||
|
],
|
||||||
|
[
|
||||||
|
46
|
||||||
|
],
|
||||||
|
[
|
||||||
|
47
|
||||||
|
],
|
||||||
|
[
|
||||||
|
48
|
||||||
|
],
|
||||||
|
[
|
||||||
|
49
|
||||||
|
],
|
||||||
|
[
|
||||||
|
50
|
||||||
|
],
|
||||||
|
[
|
||||||
|
51
|
||||||
|
],
|
||||||
|
[
|
||||||
|
52
|
||||||
|
],
|
||||||
|
[
|
||||||
|
53
|
||||||
|
],
|
||||||
|
[
|
||||||
|
54
|
||||||
|
],
|
||||||
|
[
|
||||||
|
55
|
||||||
|
],
|
||||||
|
[
|
||||||
|
56
|
||||||
|
],
|
||||||
|
[
|
||||||
|
57
|
||||||
|
],
|
||||||
|
[
|
||||||
|
58
|
||||||
|
],
|
||||||
|
[
|
||||||
|
59
|
||||||
|
],
|
||||||
|
[
|
||||||
|
60
|
||||||
|
],
|
||||||
|
[
|
||||||
|
61
|
||||||
|
],
|
||||||
|
[
|
||||||
|
62
|
||||||
|
],
|
||||||
|
[
|
||||||
|
63
|
||||||
|
],
|
||||||
|
[
|
||||||
|
64
|
||||||
|
],
|
||||||
|
[
|
||||||
|
65
|
||||||
|
],
|
||||||
|
[
|
||||||
|
66
|
||||||
|
],
|
||||||
|
[
|
||||||
|
67
|
||||||
|
],
|
||||||
|
[
|
||||||
|
68
|
||||||
|
],
|
||||||
|
[
|
||||||
|
69
|
||||||
|
],
|
||||||
|
[
|
||||||
|
70
|
||||||
|
],
|
||||||
|
[
|
||||||
|
71
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user