2021-12-17 15:49:22 +01:00
|
|
|
scalar Time
|
2022-02-22 09:19:59 +01:00
|
|
|
scalar Any
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
scalar NullableFloat
|
|
|
|
scalar MetricScope
|
|
|
|
scalar JobState
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
type Job {
|
2021-12-17 15:49:22 +01:00
|
|
|
id: ID!
|
|
|
|
jobId: Int!
|
|
|
|
user: String!
|
|
|
|
project: String!
|
|
|
|
cluster: String!
|
2022-03-14 09:08:02 +01:00
|
|
|
subCluster: String!
|
2021-12-17 15:49:22 +01:00
|
|
|
startTime: Time!
|
|
|
|
duration: Int!
|
2022-03-14 09:08:02 +01:00
|
|
|
walltime: Int!
|
2021-12-17 15:49:22 +01:00
|
|
|
numNodes: Int!
|
|
|
|
numHWThreads: Int!
|
|
|
|
numAcc: Int!
|
2021-12-16 13:17:48 +01:00
|
|
|
SMT: Int!
|
2021-12-17 15:49:22 +01:00
|
|
|
exclusive: Int!
|
|
|
|
partition: String!
|
|
|
|
arrayJobId: Int!
|
|
|
|
monitoringStatus: Int!
|
|
|
|
state: JobState!
|
2022-02-22 09:19:59 +01:00
|
|
|
metaData: Any
|
2021-12-17 15:49:22 +01:00
|
|
|
tags: [Tag!]!
|
2022-01-07 09:44:34 +01:00
|
|
|
resources: [Resource!]!
|
2021-12-16 13:17:48 +01:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type Cluster {
|
|
|
|
name: String!
|
|
|
|
metricConfig: [MetricConfig!]!
|
|
|
|
filterRanges: FilterRanges!
|
2022-03-14 10:18:56 +01:00
|
|
|
subClusters: [SubCluster!]!
|
2021-12-16 13:17:48 +01:00
|
|
|
}
|
|
|
|
|
2022-03-14 10:18:56 +01:00
|
|
|
type SubCluster {
|
2021-12-17 15:49:22 +01:00
|
|
|
name: String!
|
2022-03-14 10:18:56 +01:00
|
|
|
nodes: String!
|
2021-12-17 15:49:22 +01:00
|
|
|
processorType: String!
|
|
|
|
socketsPerNode: Int!
|
|
|
|
coresPerSocket: Int!
|
|
|
|
threadsPerCore: Int!
|
|
|
|
flopRateScalar: Int!
|
|
|
|
flopRateSimd: Int!
|
|
|
|
memoryBandwidth: Int!
|
|
|
|
topology: Topology!
|
2021-10-26 10:22:02 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type Topology {
|
|
|
|
node: [Int!]
|
|
|
|
socket: [[Int!]!]
|
|
|
|
memoryDomain: [[Int!]!]
|
|
|
|
die: [[Int!]!]
|
|
|
|
core: [[Int!]!]
|
|
|
|
accelerators: [Accelerator!]
|
2021-09-23 11:45:20 +02:00
|
|
|
}
|
2021-04-21 10:12:19 +02:00
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type Accelerator {
|
|
|
|
id: String!
|
|
|
|
type: String!
|
|
|
|
model: String!
|
2021-04-07 09:19:21 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type MetricConfig {
|
|
|
|
name: String!
|
|
|
|
unit: String!
|
2022-01-07 09:44:34 +01:00
|
|
|
scope: MetricScope!
|
2021-12-17 15:49:22 +01:00
|
|
|
timestep: Int!
|
2021-12-20 10:48:58 +01:00
|
|
|
peak: Float!
|
|
|
|
normal: Float!
|
|
|
|
caution: Float!
|
|
|
|
alert: Float!
|
2021-12-17 15:49:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
type Tag {
|
|
|
|
id: ID!
|
|
|
|
type: String!
|
|
|
|
name: String!
|
2021-04-22 15:00:54 +02:00
|
|
|
}
|
|
|
|
|
2022-01-07 09:44:34 +01:00
|
|
|
type Resource {
|
2021-12-17 15:49:22 +01:00
|
|
|
hostname: String!
|
|
|
|
hwthreads: [Int!]
|
|
|
|
accelerators: [Int!]
|
|
|
|
configuration: String
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobMetricWithName {
|
2021-12-20 10:48:58 +01:00
|
|
|
name: String!
|
|
|
|
metric: JobMetric!
|
2021-04-22 15:00:54 +02:00
|
|
|
}
|
|
|
|
|
2021-04-07 09:19:21 +02:00
|
|
|
type JobMetric {
|
2021-12-17 15:49:22 +01:00
|
|
|
unit: String!
|
|
|
|
scope: MetricScope!
|
|
|
|
timestep: Int!
|
2022-01-07 09:44:34 +01:00
|
|
|
series: [Series!]
|
|
|
|
statisticsSeries: StatsSeries
|
2021-04-07 09:19:21 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type Series {
|
|
|
|
hostname: String!
|
|
|
|
id: Int
|
|
|
|
statistics: MetricStatistics
|
|
|
|
data: [NullableFloat!]!
|
2021-04-07 09:19:21 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type MetricStatistics {
|
2022-01-27 09:29:53 +01:00
|
|
|
avg: Float!
|
|
|
|
min: Float!
|
|
|
|
max: Float!
|
2021-04-07 09:19:21 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type StatsSeries {
|
2022-01-07 09:44:34 +01:00
|
|
|
mean: [NullableFloat!]!
|
|
|
|
min: [NullableFloat!]!
|
|
|
|
max: [NullableFloat!]!
|
2021-04-14 18:53:18 +02:00
|
|
|
}
|
|
|
|
|
2021-10-26 10:22:02 +02:00
|
|
|
type MetricFootprints {
|
|
|
|
name: String!
|
|
|
|
footprints: [NullableFloat!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
enum Aggregate { USER, PROJECT, CLUSTER }
|
|
|
|
|
2021-12-09 16:25:48 +01:00
|
|
|
type NodeMetrics {
|
2022-01-31 15:16:05 +01:00
|
|
|
host: String!
|
|
|
|
metrics: [JobMetricWithName!]!
|
2021-12-09 16:25:48 +01:00
|
|
|
}
|
|
|
|
|
2022-02-19 10:28:29 +01:00
|
|
|
type Count {
|
|
|
|
name: String!
|
|
|
|
count: Int!
|
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
type Query {
|
2021-10-26 10:22:02 +02:00
|
|
|
clusters: [Cluster!]! # List of all clusters
|
2022-01-31 15:16:05 +01:00
|
|
|
tags: [Tag!]! # List of all tags
|
2021-10-26 10:22:02 +02:00
|
|
|
|
|
|
|
job(id: ID!): Job
|
2021-12-20 10:48:58 +01:00
|
|
|
jobMetrics(id: ID!, metrics: [String!], scopes: [MetricScope!]): [JobMetricWithName!]!
|
2021-10-26 10:22:02 +02:00
|
|
|
jobsFootprints(filter: [JobFilter!], metrics: [String!]!): [MetricFootprints]!
|
|
|
|
|
|
|
|
jobs(filter: [JobFilter!], page: PageRequest, order: OrderByInput): JobResultList!
|
|
|
|
jobsStatistics(filter: [JobFilter!], groupBy: Aggregate): [JobsStatistics!]!
|
2022-02-19 10:28:29 +01:00
|
|
|
jobsCount(filter: [JobFilter]!, groupBy: Aggregate!, limit: Int): [Count!]!
|
2021-10-26 10:22:02 +02:00
|
|
|
|
|
|
|
rooflineHeatmap(filter: [JobFilter!]!, rows: Int!, cols: Int!, minX: Float!, minY: Float!, maxX: Float!, maxY: Float!): [[Float!]!]!
|
2021-12-09 16:25:48 +01:00
|
|
|
|
2022-02-02 13:05:21 +01:00
|
|
|
nodeMetrics(cluster: String!, partition: String, nodes: [String!], scopes: [MetricScope!], metrics: [String!], from: Time!, to: Time!): [NodeMetrics!]!
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
2021-05-21 09:30:15 +02:00
|
|
|
type Mutation {
|
2021-12-17 15:49:22 +01:00
|
|
|
createTag(type: String!, name: String!): Tag!
|
2021-05-21 09:30:15 +02:00
|
|
|
deleteTag(id: ID!): ID!
|
2021-12-17 15:49:22 +01:00
|
|
|
addTagsToJob(job: ID!, tagIds: [ID!]!): [Tag!]!
|
|
|
|
removeTagsFromJob(job: ID!, tagIds: [ID!]!): [Tag!]!
|
2021-09-23 11:45:20 +02:00
|
|
|
|
|
|
|
updateConfiguration(name: String!, value: String!): String
|
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
type IntRangeOutput { from: Int!, to: Int! }
|
|
|
|
type TimeRangeOutput { from: Time!, to: Time! }
|
2021-09-23 11:45:20 +02:00
|
|
|
|
|
|
|
type FilterRanges {
|
2021-10-26 10:22:02 +02:00
|
|
|
duration: IntRangeOutput!
|
|
|
|
numNodes: IntRangeOutput!
|
2021-09-23 11:45:20 +02:00
|
|
|
startTime: TimeRangeOutput!
|
2021-05-21 09:30:15 +02:00
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
input JobFilter {
|
2021-10-26 10:22:02 +02:00
|
|
|
tags: [ID!]
|
|
|
|
jobId: StringInput
|
2022-01-27 10:40:48 +01:00
|
|
|
arrayJobId: Int
|
2021-12-16 13:17:48 +01:00
|
|
|
user: StringInput
|
|
|
|
project: StringInput
|
|
|
|
cluster: StringInput
|
2022-01-27 10:40:48 +01:00
|
|
|
partition: StringInput
|
2021-10-26 10:22:02 +02:00
|
|
|
duration: IntRange
|
2022-01-27 12:32:28 +01:00
|
|
|
|
2022-03-02 10:48:52 +01:00
|
|
|
minRunningFor: Int
|
|
|
|
|
2022-01-27 12:32:28 +01:00
|
|
|
numNodes: IntRange
|
|
|
|
numAccelerators: IntRange
|
|
|
|
numHWThreads: IntRange
|
|
|
|
|
2021-10-26 10:22:02 +02:00
|
|
|
startTime: TimeRange
|
2021-12-17 15:49:22 +01:00
|
|
|
state: [JobState!]
|
2021-05-06 13:50:38 +02:00
|
|
|
flopsAnyAvg: FloatRange
|
2021-10-26 10:22:02 +02:00
|
|
|
memBwAvg: FloatRange
|
|
|
|
loadAvg: FloatRange
|
|
|
|
memUsedMax: FloatRange
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
input OrderByInput {
|
|
|
|
field: String!
|
2021-10-26 10:22:02 +02:00
|
|
|
order: SortDirectionEnum! = ASC
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
enum SortDirectionEnum {
|
|
|
|
DESC
|
|
|
|
ASC
|
|
|
|
}
|
|
|
|
|
|
|
|
input StringInput {
|
2021-10-26 10:22:02 +02:00
|
|
|
eq: String
|
|
|
|
contains: String
|
2021-03-31 07:23:48 +02:00
|
|
|
startsWith: String
|
2021-10-26 10:22:02 +02:00
|
|
|
endsWith: String
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
2021-12-17 15:49:22 +01:00
|
|
|
input IntRange { from: Int!, to: Int! }
|
|
|
|
input FloatRange { from: Float!, to: Float! }
|
|
|
|
input TimeRange { from: Time, to: Time }
|
2021-03-31 07:23:48 +02:00
|
|
|
|
|
|
|
type JobResultList {
|
2021-10-26 10:22:02 +02:00
|
|
|
items: [Job!]!
|
2021-03-31 07:23:48 +02:00
|
|
|
offset: Int
|
2021-10-26 10:22:02 +02:00
|
|
|
limit: Int
|
|
|
|
count: Int
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
type HistoPoint {
|
|
|
|
count: Int!
|
|
|
|
value: Int!
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobsStatistics {
|
2021-10-26 10:22:02 +02:00
|
|
|
id: ID! # If `groupBy` was used, ID of the user/project/cluster
|
|
|
|
totalJobs: Int! # Number of jobs that matched
|
|
|
|
shortJobs: Int! # Number of jobs with a duration of less than 2 minutes
|
|
|
|
totalWalltime: Int! # Sum of the duration of all matched jobs in hours
|
|
|
|
totalCoreHours: Int! # Sum of the core hours of all matched jobs
|
|
|
|
histWalltime: [HistoPoint!]! # value: hour, count: number of jobs with a rounded duration of value
|
|
|
|
histNumNodes: [HistoPoint!]! # value: number of nodes, count: number of jobs with that number of nodes
|
2021-09-23 11:45:20 +02:00
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
input PageRequest {
|
2021-09-23 11:45:20 +02:00
|
|
|
itemsPerPage: Int!
|
2021-10-26 10:22:02 +02:00
|
|
|
page: Int!
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|