{
  "$schema": "http://json-schema.org/draft/2020-12/schema",
  "$id": "embedfs://job-data.schema.json",
  "title": "Job metric data list",
  "description": "Collection of metric data of a HPC job",
  "type": "object",
  "properties": {
    "mem_used": {
      "description": "Memory capacity used",
      "type": "object",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "node"
      ]
    },
    "flops_any": {
      "description": "Total flop rate with DP flops scaled up",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "mem_bw": {
      "description": "Main memory bandwidth",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "net_bw": {
      "description": "Total fast interconnect network bandwidth",
      "type": "object",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "node"
      ]
    },
    "ipc": {
      "description": "Instructions executed per cycle",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "cpu_user": {
      "description": "CPU user active core utilization",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "cpu_load": {
      "description": "CPU requested core utilization (load 1m)",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "node"
      ]
    },
    "flops_dp": {
      "description": "Double precision flop rate",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "flops_sp": {
      "description": "Single precision flops rate",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "vectorization_ratio": {
      "description": "Fraction of arithmetic instructions using SIMD instructions",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "cpu_power": {
      "description": "CPU power consumption",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "mem_power": {
      "description": "Memory power consumption",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "acc_utilization": {
      "description": "GPU utilization",
      "properties": {
        "accelerator": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "accelerator"
      ]
    },
    "acc_mem_used": {
      "description": "GPU memory capacity used",
      "properties": {
        "accelerator": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "accelerator"
      ]
    },
    "acc_power": {
      "description": "GPU power consumption",
      "properties": {
        "accelerator": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "accelerator"
      ]
    },
    "clock": {
      "description": "Average core frequency",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "socket": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "memoryDomain": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "core": {
          "$ref": "embedfs://job-metric-data.schema.json"
        },
        "hwthread": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "minProperties": 1
    },
    "eth_read_bw": {
      "description": "Ethernet read bandwidth",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "node"
      ]
    },
    "eth_write_bw": {
      "description": "Ethernet write bandwidth",
      "properties": {
        "node": {
          "$ref": "embedfs://job-metric-data.schema.json"
        }
      },
      "required": [
        "node"
      ]
    },
    "filesystems": {
      "description": "Array of filesystems",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "nfs",
              "lustre",
              "gpfs",
              "nvme",
              "ssd",
              "hdd",
              "beegfs"
            ]
          },
          "read_bw": {
            "description": "File system read bandwidth",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "write_bw": {
            "description": "File system write bandwidth",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "read_req": {
            "description": "File system read requests",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "write_req": {
            "description": "File system write requests",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "inodes": {
            "description": "File system write requests",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "accesses": {
            "description": "File system open and close",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "fsync": {
            "description": "File system fsync",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "create": {
            "description": "File system create",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "open": {
            "description": "File system open",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "close": {
            "description": "File system close",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          },
          "seek": {
            "description": "File system seek",
            "properties": {
              "node": {
                "$ref": "embedfs://job-metric-data.schema.json"
              }
            },
            "required": [
              "node"
            ]
          }
        },
        "required": [
          "name",
          "type",
          "read_bw",
          "write_bw"
        ]
      },
      "minItems": 1
    }
  },
  "ic_rcv_packets": {
    "description": "Network interconnect read packets",
    "properties": {
      "node": {
        "$ref": "embedfs://job-metric-data.schema.json"
      }
    },
    "required": [
      "node"
    ]
  },
  "ic_send_packets": {
    "description": "Network interconnect send packet",
    "properties": {
      "node": {
        "$ref": "embedfs://job-metric-data.schema.json"
      }
    },
    "required": [
      "node"
    ]
  },
  "ic_read_bw": {
    "description": "Network interconnect read bandwidth",
    "properties": {
      "node": {
        "$ref": "embedfs://job-metric-data.schema.json"
      }
    },
    "required": [
      "node"
    ]
  },
  "ic_write_bw": {
    "description": "Network interconnect write bandwidth",
    "properties": {
      "node": {
        "$ref": "embedfs://job-metric-data.schema.json"
      }
    },
    "required": [
      "node"
    ]
  },
  "required": [
    "cpu_user",
    "cpu_load",
    "mem_used",
    "flops_any",
    "mem_bw",
    "net_bw",
    "filesystems"
  ]
}