mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-12-26 05:19:05 +01:00
Extend schema and start Unit test implementation
Does not compile and work yet
This commit is contained in:
parent
130613b717
commit
bd89ce7cc9
@ -12,11 +12,12 @@ import (
|
|||||||
"github.com/ClusterCockpit/cc-backend/pkg/schema"
|
"github.com/ClusterCockpit/cc-backend/pkg/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Clusters []*schema.Cluster
|
var (
|
||||||
var nodeLists map[string]map[string]NodeList
|
Clusters []*schema.Cluster
|
||||||
|
nodeLists map[string]map[string]NodeList
|
||||||
|
)
|
||||||
|
|
||||||
func initClusterConfig() error {
|
func initClusterConfig() error {
|
||||||
|
|
||||||
Clusters = []*schema.Cluster{}
|
Clusters = []*schema.Cluster{}
|
||||||
nodeLists = map[string]map[string]NodeList{}
|
nodeLists = map[string]map[string]NodeList{}
|
||||||
|
|
||||||
@ -49,6 +50,32 @@ func initClusterConfig() error {
|
|||||||
if !mc.Scope.Valid() {
|
if !mc.Scope.Valid() {
|
||||||
return errors.New("cluster.metricConfig.scope must be a valid scope ('node', 'scocket', ...)")
|
return errors.New("cluster.metricConfig.scope must be a valid scope ('node', 'scocket', ...)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scLookup := make(map[string]*schema.SubClusterConfig)
|
||||||
|
|
||||||
|
for _, scc := range mc.SubClusters {
|
||||||
|
scLookup[scc.Name] = scc
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sc := range cluster.SubClusters {
|
||||||
|
newMetric := mc
|
||||||
|
|
||||||
|
if cfg, ok := scLookup[sc.Name]; ok {
|
||||||
|
if !cfg.Remove {
|
||||||
|
newMetric.Peak = cfg.Peak
|
||||||
|
newMetric.Peak = cfg.Peak
|
||||||
|
newMetric.Normal = cfg.Normal
|
||||||
|
newMetric.Caution = cfg.Caution
|
||||||
|
newMetric.Alert = cfg.Alert
|
||||||
|
newMetric.Footprint = cfg.Footprint
|
||||||
|
sc.MetricConfig = append(sc.MetricConfig, *newMetric)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if newMetric.Footprint {
|
||||||
|
sc.Footprint = append(sc.Footprint, newMetric.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Clusters = append(Clusters, cluster)
|
Clusters = append(Clusters, cluster)
|
||||||
@ -71,7 +98,6 @@ func initClusterConfig() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetCluster(cluster string) *schema.Cluster {
|
func GetCluster(cluster string) *schema.Cluster {
|
||||||
|
|
||||||
for _, c := range Clusters {
|
for _, c := range Clusters {
|
||||||
if c.Name == cluster {
|
if c.Name == cluster {
|
||||||
return c
|
return c
|
||||||
@ -90,11 +116,10 @@ func GetSubCluster(cluster, subcluster string) (*schema.SubCluster, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, fmt.Errorf("Subcluster '%v' not found for cluster '%v', or cluster '%v' not configured!", subcluster, cluster, cluster)
|
return nil, fmt.Errorf("subcluster '%v' not found for cluster '%v', or cluster '%v' not configured", subcluster, cluster, cluster)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMetricConfig(cluster, metric string) *schema.MetricConfig {
|
func GetMetricConfig(cluster, metric string) *schema.MetricConfig {
|
||||||
|
|
||||||
for _, c := range Clusters {
|
for _, c := range Clusters {
|
||||||
if c.Name == cluster {
|
if c.Name == cluster {
|
||||||
for _, m := range c.MetricConfig {
|
for _, m := range c.MetricConfig {
|
||||||
@ -110,7 +135,6 @@ func GetMetricConfig(cluster, metric string) *schema.MetricConfig {
|
|||||||
// AssignSubCluster sets the `job.subcluster` property of the job based
|
// AssignSubCluster sets the `job.subcluster` property of the job based
|
||||||
// on its cluster and resources.
|
// on its cluster and resources.
|
||||||
func AssignSubCluster(job *schema.BaseJob) error {
|
func AssignSubCluster(job *schema.BaseJob) error {
|
||||||
|
|
||||||
cluster := GetCluster(job.Cluster)
|
cluster := GetCluster(job.Cluster)
|
||||||
if cluster == nil {
|
if cluster == nil {
|
||||||
return fmt.Errorf("ARCHIVE/CLUSTERCONFIG > unkown cluster: %v", job.Cluster)
|
return fmt.Errorf("ARCHIVE/CLUSTERCONFIG > unkown cluster: %v", job.Cluster)
|
||||||
@ -146,7 +170,6 @@ func AssignSubCluster(job *schema.BaseJob) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetSubClusterByNode(cluster, hostname string) (string, error) {
|
func GetSubClusterByNode(cluster, hostname string) (string, error) {
|
||||||
|
|
||||||
for sc, nl := range nodeLists[cluster] {
|
for sc, nl := range nodeLists[cluster] {
|
||||||
if nl != nil && nl.Contains(hostname) {
|
if nl != nil && nl.Contains(hostname) {
|
||||||
return sc, nil
|
return sc, nil
|
||||||
|
15
pkg/archive/clusterConfig_test.go
Normal file
15
pkg/archive/clusterConfig_test.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright (C) NHR@FAU, University Erlangen-Nuremberg.
|
||||||
|
// All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
package archive
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestClusterConfig(t *testing.T) {
|
||||||
|
var fsa FsArchive
|
||||||
|
version, err := fsa.Init(json.RawMessage("{\"path\":\"testdata/archive\"}"))
|
||||||
|
}
|
@ -30,6 +30,7 @@ func TestInitNoJson(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestInitNotExists(t *testing.T) {
|
func TestInitNotExists(t *testing.T) {
|
||||||
var fsa FsArchive
|
var fsa FsArchive
|
||||||
_, err := fsa.Init(json.RawMessage("{\"path\":\"testdata/job-archive\"}"))
|
_, err := fsa.Init(json.RawMessage("{\"path\":\"testdata/job-archive\"}"))
|
||||||
@ -50,7 +51,7 @@ func TestInit(t *testing.T) {
|
|||||||
if version != 1 {
|
if version != 1 {
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
if len(fsa.clusters) != 1 || fsa.clusters[0] != "emmy" {
|
if len(fsa.clusters) != 3 || fsa.clusters[0] != "emmy" {
|
||||||
t.Fail()
|
t.Fail()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,7 +134,6 @@ func TestLoadJobData(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkLoadJobData(b *testing.B) {
|
func BenchmarkLoadJobData(b *testing.B) {
|
||||||
|
|
||||||
tmpdir := b.TempDir()
|
tmpdir := b.TempDir()
|
||||||
jobarchive := filepath.Join(tmpdir, "job-archive")
|
jobarchive := filepath.Join(tmpdir, "job-archive")
|
||||||
util.CopyDir("./testdata/archive/", jobarchive)
|
util.CopyDir("./testdata/archive/", jobarchive)
|
||||||
@ -157,7 +157,6 @@ func BenchmarkLoadJobData(b *testing.B) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkLoadJobDataCompressed(b *testing.B) {
|
func BenchmarkLoadJobDataCompressed(b *testing.B) {
|
||||||
|
|
||||||
tmpdir := b.TempDir()
|
tmpdir := b.TempDir()
|
||||||
jobarchive := filepath.Join(tmpdir, "job-archive")
|
jobarchive := filepath.Join(tmpdir, "job-archive")
|
||||||
util.CopyDir("./testdata/archive/", jobarchive)
|
util.CopyDir("./testdata/archive/", jobarchive)
|
||||||
|
2774
pkg/archive/testdata/archive/alex/cluster.json
vendored
Normal file
2774
pkg/archive/testdata/archive/alex/cluster.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
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
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -30,16 +30,18 @@ type MetricValue struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SubCluster struct {
|
type SubCluster struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Nodes string `json:"nodes"`
|
Nodes string `json:"nodes"`
|
||||||
ProcessorType string `json:"processorType"`
|
ProcessorType string `json:"processorType"`
|
||||||
Topology Topology `json:"topology"`
|
Topology Topology `json:"topology"`
|
||||||
FlopRateScalar MetricValue `json:"flopRateScalar"`
|
FlopRateScalar MetricValue `json:"flopRateScalar"`
|
||||||
FlopRateSimd MetricValue `json:"flopRateSimd"`
|
FlopRateSimd MetricValue `json:"flopRateSimd"`
|
||||||
MemoryBandwidth MetricValue `json:"memoryBandwidth"`
|
MemoryBandwidth MetricValue `json:"memoryBandwidth"`
|
||||||
SocketsPerNode int `json:"socketsPerNode"`
|
MetricConfig []MetricConfig `json:"metricConfig,omitempty"`
|
||||||
CoresPerSocket int `json:"coresPerSocket"`
|
Footprint []string `json:"footprint,omitempty"`
|
||||||
ThreadsPerCore int `json:"threadsPerCore"`
|
SocketsPerNode int `json:"socketsPerNode"`
|
||||||
|
CoresPerSocket int `json:"coresPerSocket"`
|
||||||
|
ThreadsPerCore int `json:"threadsPerCore"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SubClusterConfig struct {
|
type SubClusterConfig struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user