mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-10-31 16:05:06 +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 { | ||||
| 		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) | ||||
| } | ||||
|  | ||||
| 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( | ||||
| 	jobMeta *schema.JobMeta, | ||||
| 	jobData *schema.JobData, | ||||
| @@ -239,36 +327,37 @@ func (s3a *S3Archive) ImportJob( | ||||
|  | ||||
| 	r, w := io.Pipe() | ||||
|  | ||||
| 	if err := EncodeJobMeta(w, jobMeta); err != nil { | ||||
| 		log.Error("Error while encoding job metadata to meta.json file") | ||||
| 		return err | ||||
| 	} | ||||
| 	go func() { | ||||
| 		defer w.Close() | ||||
| 		if err := EncodeJobMeta(w, jobMeta); err != nil { | ||||
| 			log.Error("Error while encoding job metadata to meta.json object") | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	key := getPath(&job, "./", "meta.json") | ||||
| 	s3a.client.PutObject(context.Background(), | ||||
| 		s3a.bucket, key, r, | ||||
| 		int64(unsafe.Sizeof(job)), minio.PutObjectOptions{}) | ||||
| 	_, e := s3a.client.PutObject(context.Background(), | ||||
| 		s3a.bucket, key, r, -1, minio.PutObjectOptions{}) | ||||
|  | ||||
| 	if err := w.Close(); err != nil { | ||||
| 		log.Warn("Error while closing meta.json file") | ||||
| 		return err | ||||
| 	if e != nil { | ||||
| 		log.Errorf("Put error %#v", e) | ||||
| 		return e | ||||
| 	} | ||||
| 	r, w = io.Pipe() | ||||
|  | ||||
| 	// | ||||
| 	// f, err = os.Create(path.Join(dir, "data.json")) | ||||
| 	// if err != nil { | ||||
| 	// 	log.Error("Error while creating filepath for data.json") | ||||
| 	// 	return err | ||||
| 	// } | ||||
| 	// if err := EncodeJobData(f, jobData); err != nil { | ||||
| 	// 	log.Error("Error while encoding job metricdata to data.json file") | ||||
| 	// 	return err | ||||
| 	// } | ||||
| 	// if err := f.Close(); err != nil { | ||||
| 	// 	log.Warn("Error while closing data.json file") | ||||
| 	// } | ||||
| 	// return err | ||||
| 	// | ||||
| 	go func() { | ||||
| 		defer w.Close() | ||||
| 		if err := EncodeJobData(w, jobData); err != nil { | ||||
| 			log.Error("Error while encoding job metricdata to data.json object") | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	key = getPath(&job, "./", "data.json") | ||||
| 	_, e = s3a.client.PutObject(context.Background(), | ||||
| 		s3a.bucket, key, r, -1, minio.PutObjectOptions{}) | ||||
| 	if e != nil { | ||||
| 		log.Errorf("Put error %#v", e) | ||||
| 		return e | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
| @@ -315,4 +404,3 @@ func (s3a *S3Archive) GetClusters() []string { | ||||
| // | ||||
| // func (s3a *S3Archive) CompressLast(starttime int64) int64 | ||||
| // | ||||
| // func (s3a *S3Archive) Iter(loadMetricData bool) <-chan JobContainer | ||||
|   | ||||
| @@ -5,7 +5,10 @@ | ||||
| package archive | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| @@ -100,3 +103,51 @@ func TestS3LoadCluster(t *testing.T) { | ||||
| 		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