2021-03-31 07:23:48 +02:00
|
|
|
type Job {
|
2021-04-14 17:57:19 +02:00
|
|
|
id: ID!
|
2021-03-31 07:23:48 +02:00
|
|
|
jobId: String!
|
|
|
|
userId: String!
|
|
|
|
projectId: String!
|
|
|
|
clusterId: String!
|
|
|
|
startTime: Time!
|
|
|
|
duration: Int!
|
|
|
|
numNodes: Int!
|
2021-04-12 14:01:59 +02:00
|
|
|
hasProfile: Boolean!
|
2021-09-23 11:45:20 +02:00
|
|
|
tags: [JobTag!]!
|
2021-04-14 17:57:19 +02:00
|
|
|
|
2021-05-06 13:50:38 +02:00
|
|
|
loadAvg: Float
|
2021-05-06 08:36:24 +02:00
|
|
|
memUsedMax: Float
|
|
|
|
flopsAnyAvg: Float
|
|
|
|
memBwAvg: Float
|
|
|
|
netBwAvg: Float
|
|
|
|
fileBwAvg: Float
|
2021-09-23 11:45:20 +02:00
|
|
|
}
|
2021-04-21 10:12:19 +02:00
|
|
|
|
2021-09-23 11:45:20 +02:00
|
|
|
type JobTag {
|
|
|
|
id: ID!
|
|
|
|
tagType: String!
|
|
|
|
tagName: String!
|
2021-04-07 09:19:21 +02:00
|
|
|
}
|
|
|
|
|
2021-04-22 15:00:54 +02:00
|
|
|
type Cluster {
|
|
|
|
clusterID: String!
|
|
|
|
processorType: String!
|
|
|
|
socketsPerNode: Int!
|
|
|
|
coresPerSocket: Int!
|
|
|
|
threadsPerCore: Int!
|
|
|
|
flopRateScalar: Int!
|
|
|
|
flopRateSimd: Int!
|
|
|
|
memoryBandwidth: Int!
|
|
|
|
metricConfig: [MetricConfig!]!
|
2021-05-06 08:36:24 +02:00
|
|
|
filterRanges: FilterRanges!
|
2021-04-22 15:00:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
type MetricConfig {
|
|
|
|
name: String!
|
|
|
|
unit: String!
|
|
|
|
sampletime: Int!
|
|
|
|
peak: Int!
|
|
|
|
normal: Int!
|
|
|
|
caution: Int!
|
|
|
|
alert: Int!
|
|
|
|
}
|
|
|
|
|
2021-04-07 09:19:21 +02:00
|
|
|
type JobMetric {
|
|
|
|
unit: String!
|
|
|
|
scope: JobMetricScope!
|
|
|
|
timestep: Int!
|
|
|
|
series: [JobMetricSeries]!
|
|
|
|
}
|
|
|
|
|
|
|
|
enum JobMetricScope {
|
|
|
|
node
|
|
|
|
cpu
|
|
|
|
socket
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobMetricSeries {
|
|
|
|
node_id: String!
|
|
|
|
statistics: JobMetricStatistics
|
|
|
|
data: [Float]!
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobMetricStatistics {
|
|
|
|
avg: Float!
|
|
|
|
min: Float!
|
|
|
|
max: Float!
|
|
|
|
}
|
|
|
|
|
2021-09-23 11:45:20 +02:00
|
|
|
type JobMetricWithName {
|
|
|
|
name: String!
|
|
|
|
metric: JobMetric!
|
2021-04-14 18:53:18 +02:00
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
type Query {
|
2021-04-22 15:00:54 +02:00
|
|
|
clusters: [Cluster!]!
|
2021-05-21 09:30:15 +02:00
|
|
|
jobById(id: ID!): Job
|
2021-03-31 07:23:48 +02:00
|
|
|
jobs(filter: JobFilterList, page: PageRequest, order: OrderByInput): JobResultList!
|
|
|
|
jobsStatistics(filter: JobFilterList): JobsStatistics!
|
2021-09-23 11:45:20 +02:00
|
|
|
jobMetrics(jobId: String!, clusterId: String, metrics: [String]): [JobMetricWithName]!
|
|
|
|
jobMetricAverages(filter: JobFilterList!, metrics: [String]!): [[Float]]!
|
|
|
|
rooflineHeatmap(filter: JobFilterList!, rows: Int!, cols: Int!, minX: Float!, minY: Float!, maxX: Float!, maxY: Float!): [[Float!]]!
|
2021-05-06 08:36:24 +02:00
|
|
|
tags: [JobTag!]!
|
|
|
|
filterRanges: FilterRanges!
|
2021-09-23 11:45:20 +02:00
|
|
|
userStats(startTime: Time, stopTime: Time, clusterId: String): [UserStats!]!
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
2021-05-21 09:30:15 +02:00
|
|
|
type Mutation {
|
|
|
|
createTag(type: String!, name: String!): JobTag!
|
|
|
|
deleteTag(id: ID!): ID!
|
|
|
|
addTagsToJob(job: ID!, tagIds: [ID!]!): [JobTag!]!
|
|
|
|
removeTagsFromJob(job: ID!, tagIds: [ID!]!): [JobTag!]!
|
2021-09-23 11:45:20 +02:00
|
|
|
|
|
|
|
updateConfiguration(name: String!, value: String!): String
|
|
|
|
}
|
|
|
|
|
|
|
|
type IntRangeOutput {
|
|
|
|
from: Int!
|
|
|
|
to: Int!
|
|
|
|
}
|
|
|
|
|
|
|
|
type TimeRangeOutput {
|
|
|
|
from: Time!
|
|
|
|
to: Time!
|
|
|
|
}
|
|
|
|
|
|
|
|
type FilterRanges {
|
|
|
|
duration: IntRangeOutput!
|
|
|
|
numNodes: IntRangeOutput!
|
|
|
|
startTime: TimeRangeOutput!
|
2021-05-21 09:30:15 +02:00
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
input JobFilterList {
|
|
|
|
list: [JobFilter]
|
|
|
|
}
|
|
|
|
|
|
|
|
input JobFilter {
|
2021-04-30 10:26:13 +02:00
|
|
|
tags: [ID!]
|
2021-03-31 07:23:48 +02:00
|
|
|
jobId: StringInput
|
|
|
|
userId: StringInput
|
|
|
|
projectId: StringInput
|
|
|
|
clusterId: StringInput
|
|
|
|
duration: IntRange
|
|
|
|
numNodes: IntRange
|
|
|
|
startTime: TimeRange
|
2021-09-23 11:45:20 +02:00
|
|
|
isRunning: Boolean
|
2021-05-06 13:50:38 +02:00
|
|
|
flopsAnyAvg: FloatRange
|
|
|
|
memBwAvg: FloatRange
|
|
|
|
loadAvg: FloatRange
|
|
|
|
memUsedMax: FloatRange
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
input OrderByInput {
|
|
|
|
field: String!
|
|
|
|
order: SortDirectionEnum = ASC
|
|
|
|
}
|
|
|
|
|
|
|
|
enum SortDirectionEnum {
|
|
|
|
DESC
|
|
|
|
ASC
|
|
|
|
}
|
|
|
|
|
|
|
|
input StringInput {
|
|
|
|
eq: String
|
|
|
|
contains: String
|
|
|
|
startsWith: String
|
|
|
|
endsWith: String
|
|
|
|
}
|
|
|
|
|
|
|
|
input IntRange {
|
|
|
|
from: Int!
|
|
|
|
to: Int!
|
|
|
|
}
|
|
|
|
|
|
|
|
input FloatRange {
|
|
|
|
from: Float!
|
|
|
|
to: Float!
|
|
|
|
}
|
|
|
|
|
|
|
|
input TimeRange {
|
|
|
|
from: Time!
|
|
|
|
to: Time!
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobResultList {
|
|
|
|
items: [Job]!
|
|
|
|
offset: Int
|
|
|
|
limit: Int
|
|
|
|
count: Int
|
|
|
|
}
|
|
|
|
|
|
|
|
type HistoPoint {
|
|
|
|
count: Int!
|
|
|
|
value: Int!
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobsStatistics {
|
|
|
|
totalJobs: Int!
|
|
|
|
shortJobs: Int!
|
|
|
|
totalWalltime: Int!
|
|
|
|
totalCoreHours: Int!
|
|
|
|
histWalltime: [HistoPoint]!
|
|
|
|
histNumNodes: [HistoPoint]!
|
|
|
|
}
|
|
|
|
|
2021-09-23 11:45:20 +02:00
|
|
|
type UserStats {
|
|
|
|
userId: ID!
|
|
|
|
totalJobs: Int!
|
|
|
|
totalWalltime: Float!
|
|
|
|
totalCoreHours: Float!
|
|
|
|
}
|
|
|
|
|
2021-03-31 07:23:48 +02:00
|
|
|
input PageRequest {
|
2021-09-23 11:45:20 +02:00
|
|
|
itemsPerPage: Int!
|
|
|
|
page: Int!
|
2021-03-31 07:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
scalar Time
|