From 3c220fcff6b5b24da2a427a51c6a81c130f1e56d Mon Sep 17 00:00:00 2001 From: jiangsanyin <1327212357@qq.com> Date: Thu, 10 Oct 2024 09:37:08 +0800 Subject: [PATCH] fix grafana dashboard and clarify dashboard usage more clearly; Fix the image display problem in document; Change deployment/values.yaml before deploying dcgm-exporter. Signed-off-by: jiangsanyin <1327212357@qq.com> --- docs/dashboard.md | 240 ++- docs/dashboard_cn.md | 241 ++- docs/gpu-dashboard.json | 2984 ++++++++++++++++---------- imgs/hami-vgpu-metrics-dashboard.png | Bin 0 -> 130000 bytes 4 files changed, 2257 insertions(+), 1208 deletions(-) create mode 100644 imgs/hami-vgpu-metrics-dashboard.png diff --git a/docs/dashboard.md b/docs/dashboard.md index 878d70b0e..1d72ebbb4 100644 --- a/docs/dashboard.md +++ b/docs/dashboard.md @@ -1,54 +1,236 @@ -## Grafana Dashboard +# Abstract -- You can load this dashboard json file [gpu-dashboard.json](./gpu-dashboard.json) +​ For the sake of simplicity, this article provides only one possible way to ultimately use prometheus to capture monitoring metrics as a data source and grafana to present monitoring information. -- This dashboard also includes some NVIDIA DCGM metrics: +​ Many users feedback from creating issues that they do not know how to install and configure related components, resulting in failure to use related dashboard normally. The installation and configuration steps are described as follows, Hope you use it smoothly! Any feedback is welcome. - [dcgm-exporter](https://github.com/NVIDIA/dcgm-exporter) deploy:`kubectl create -f https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/master/dcgm-exporter.yaml` +​ This article assumes that Kubernetes cluster and HAMi has been deployed successfully. The following components are installed in a kubernetes cluster. The components or software versions are as follows: -- use this prometheus custom metric configure: +| components or software name | version | remark | +| --------------------------- | ------------------- | ---------------- | +| kubernetes cluster | v1.23.10 | in AMD64 servers | +| kube-prometheus stack | branch release-0.11 | | +| dcgm-exporter | tag 3.2.5-3.1.7 | | -```yaml -- job_name: 'kubernetes-vgpu-exporter' - kubernetes_sd_configs: - - role: endpoints - relabel_configs: - - source_labels: [__meta_kubernetes_endpoints_name] - regex: vgpu-device-plugin-monitor +# Deploy and configure kube-prometheus stack + +## Deploy kube-prometheus stack + +**Note:**See the version compatibility matrix for kubernetes and kube-prometheus stack in:https://github.com/prometheus-operator/kube-prometheus?tab=readme-ov-file#compatibility + +```shell +#Clone kube-prometheus code repository(using release-0.11 here) +git clone -b release-0.11 https://github.com/prometheus-operator/kube-prometheus.git +cd kube-prometheus + +#Change type of grafana service into NodePort by Adding "type: NodePort" under spec section +vi manifests/grafana-service.yaml +... +spec: + type: NodePort +... +#Similarly, change the prometheus and alertmanager service types to NodePort. Their configuration files are prometheus-service.yaml and alertmanager-service.yaml, respectively, in the manifests directory + +#Do deployment +kubectl create -f manifests/setup/ +kubectl create -f manifests/. + +#All resouce objects are been created under the monitoring namespace, you can check them and their status by run the following command +kubectl -n monitoring get all +``` + +```shell +#Once all resouce objects under the monitoring namespace are in right status, you can obtain svc information for grafana, prometheus, and alertmanager in the following way +root@controller01:~/kube-prometheus# kubectl -n monitoring get svc | egrep "NAME|grafana|prometheus-k8s|alertmanager-main" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +alertmanager-main NodePort 10.233.5.65 9093:30093/TCP,8080:30401/TCP 19h +grafana NodePort 10.233.56.112 3000:30300/TCP 19h +prometheus-k8s NodePort 10.233.38.113 9090:30090/TCP,8080:31273/TCP 19h +``` + +​ If ip address of controller node is 10.0.0.21, then grafana, prometheus, and alertmanager can be accessed using the following urls: http://10.0.0.21:30300 , http://10.0.0.21:30090 , and http://10.0.0.21:30093 , and the default user name and password for accessing grafana are admin + +## Configure grafana + +### Create Datasource ALL + +​ Go to the "Configuration" -> "Data soutces" page in grafana and create a datasource named "ALL", and keep the value of HTTP.URL be same with the counterpart in default "prometheus" datasource. + +### Import dashboard + +​ Go to the "Configuration" -> "Data soutces" page in grafana and import the dashboard from https://grafana.com/grafana/dashboards/22043-hami-vgpu-metrics-dashboard/ , and a dashboard page named "hami-vgpu-metrics-dashboard" will be created. 22043-hami-vgpu-metrics-dashboard is valid in grafana8.5.5 and grafana9.1.0, and it's grealty possible that this dashboard is vaild in grafana version later than 9.1.0. Now data of some panels in this dashboard page are missing, which requires you read the rest of the document. + +​ For versions earlier than grafana8.5.5, such as grafana7.5.17, please refer to:https://grafana.com/grafana/dashboards/21833-hami-vgpu-dashboard/ + +# Deploy dcgm-exporter + +```shell +#Clone dcgm-exporter code repository(the compatibility matrix for dcgm-export and kubernetes is not been founded in its official website, using "tag 3.2.5-3.1.7" here) +git clone -b 3.2.5-3.1.7 https://github.com/NVIDIA/dcgm-exporter.git +cd dcgm-exporter + +#Modified file "deployment/values.yaml", add configurations under relabelings in serviceMonitor section, these configurations are necessary for dashboard page display +#There is only one serviceMonitor in file "deployment/values.yaml", and the contents of the modified file are as follows +vi deployment/values.yaml +... +serviceMonitor: + enabled: true + interval: 15s + honorLabels: false + additionalLabels: {} + #monitoring: prometheus + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: dcgm-exporter + replacement: $1 + action: keep + - sourceLabels: [__meta_kubernetes_pod_node_name] + regex: (.*) + targetLabel: node_name + replacement: ${1} + action: replace + - sourceLabels: [__meta_kubernetes_pod_host_ip] + regex: (.*) + targetLabel: ip + replacement: $1 + action: replace +... + +#Install dcgm-exporter under monitoring namespace with helm +helm install dcgm-exporter deployment/ -n monitoring + +#Check the result of running "helm install ..." +helm list -n monitoring +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +dcgm-exporter monitoring 1 2024-10-02 16:32:35.691073696 +0800 CST deployed dcgm-exporter-3.1.7 3.1.7 +#Make sure pod(s)/dcgm-exporter-xxx is(are) in running status +kubectl -n monitoring get pods | egrep "NAME|dcgm-exporter" +NAME READY STATUS RESTARTS AGE +dcgm-exporter-p4fdp 1/1 Running 0 4h14m +``` + +# Create ServiceMonitor + +```shell +#Create the file hami-device-plugin-svc-monitor.yaml +root@controller01:~# touch hami-device-plugin-svc-monitor.yaml +#The content of the file hami-device-plugin-svc-monitor.yaml +root@controller01:~# cat hami-device-plugin-svc-monitor.yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: hami-device-plugin-svc-monitor + namespace: kube-system +spec: + selector: + matchLabels: + app.kubernetes.io/component: hami-device-plugin + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - path: /metrics + port: monitorport + interval: "15s" + honorLabels: false + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: hami-.* replacement: $1 action: keep - - source_labels: [__meta_kubernetes_pod_node_name] + - sourceLabels: [__meta_kubernetes_pod_node_name] regex: (.*) - target_label: node_name + targetLabel: node_name replacement: ${1} action: replace - - source_labels: [__meta_kubernetes_pod_host_ip] + - sourceLabels: [__meta_kubernetes_pod_host_ip] regex: (.*) - target_label: ip + targetLabel: ip replacement: $1 action: replace -- job_name: 'kubernetes-dcgm-exporter' - kubernetes_sd_configs: - - role: endpoints - relabel_configs: - - source_labels: [__meta_kubernetes_endpoints_name] - regex: dcgm-exporter + +#apply the file hami-device-plugin-svc-monitor.yaml +root@controller01:~# kubectl apply -f hami-device-plugin-svc-monitor.yaml +``` + +```shell +#Create the file hami-scheduler-svc-monitor.yaml +root@controller01:~# touch hami-device-plugin-svc-monitor.yaml +#The content of the file hami-scheduler-svc-monitor.yaml +root@controller01:~# cat hami-scheduler-svc-monitor.yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: hami-scheduler-svc-monitor + namespace: kube-system +spec: + selector: + matchLabels: + app.kubernetes.io/component: hami-scheduler + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - path: /metrics + port: monitor + interval: "15s" + honorLabels: false + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: hami-.* replacement: $1 action: keep - - source_labels: [__meta_kubernetes_pod_node_name] + - sourceLabels: [__meta_kubernetes_pod_node_name] regex: (.*) - target_label: node_name + targetLabel: node_name replacement: ${1} action: replace - - source_labels: [__meta_kubernetes_pod_host_ip] + - sourceLabels: [__meta_kubernetes_pod_host_ip] regex: (.*) - target_label: ip + targetLabel: ip replacement: $1 action: replace + +#apply the file hami-scheduler-svc-monitor.yaml +root@controller01:~# kubectl apply -f hami-scheduler-svc-monitor.yaml +``` + +```shell +#Check the servicemonitors +root@controller01:~# kubectl -n kube-system get servicemonitor +NAME AGE +hami-device-plugin-svc-monitor 28h +hami-scheduler-svc-monitor 28h ``` -- reload promethues: +# Confirm the final monitoring effect + +```shell +#Create the file gpu-pod.yaml +root@controller01:~# touch gpu-pod.yaml +root@controller01:~# cat gpu-pod.yaml +apiVersion: v1 +kind: Pod +metadata: + name: gpu-pod-01 +spec: + restartPolicy: Never + containers: + - name: cuda-container + image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 + resources: + limits: + nvidia.com/vgpu: 2 # requesting 2 vGPUs + nvidia.com/gpumem: 3000 # Each vGPU contains 3000m device memory (Optional,Integer) + nvidia.com/gpucores: 10 # Each vGPU uses 30% of the entire GPU (Optional,Integer) -```bash -curl -XPOST http://{promethuesServer}:{port}/-/reload +#apply the file gpu-pod.yaml +root@controller01:~# kubectl apply -f gpu-pod.yaml +root@controller01:~# kubectl get pods -o wide +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +gpu-pod-01 0/1 Completed 0 52s 10.233.81.70 controller01 ``` + +​ You can see the monitoring details in the dashboard. The contents are as follows: + +![hami-vgpu-metrics-dashboard](../imgs/hami-vgpu-metrics-dashboard.png) \ No newline at end of file diff --git a/docs/dashboard_cn.md b/docs/dashboard_cn.md index 20ee3ecb8..e68d6b607 100644 --- a/docs/dashboard_cn.md +++ b/docs/dashboard_cn.md @@ -1,53 +1,236 @@ -## Grafana Dashboard +# 说明 -- 你可以在 grafana 中导入此 [gpu-dashboard.json](./gpu-dashboard.json) -- 此 dashboard 还包括一部分 NVIDIA DCGM 监控指标: +​ 为了阐述的简明性,本文只提供一种可行的办法,最终实现使用prometheus抓取监控指标并作为数据源、使用grafana来展示监控信息的目的。 - [dcgm-exporter](https://github.com/NVIDIA/dcgm-exporter)部署:`kubectl create -f https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/master/dcgm-exporter.yaml` +​ 很多使用者通过issue反馈不知如何安装与配置相关组件导致无法正常使用相关dashboard,现将安装与配置步骤叙述如下,希望大家使用顺利!如有问题欢迎创建issue反馈,如有不足欢迎补充! -- 添加 prometheus 自定义的监控项: +​ 本文假设读者已经部署好Kubernetes集群、HAMi。以下涉及到的相关组件都是在kubernetes集群内安装的,相关组件或软件版本信息如下: -```yaml -- job_name: 'kubernetes-vgpu-exporter' - kubernetes_sd_configs: - - role: endpoints - relabel_configs: - - source_labels: [__meta_kubernetes_endpoints_name] - regex: vgpu-device-plugin-monitor +| 组件或软件名称 | 版本 | 备注 | +| --------------------- | ----------------- | --------------------- | +| kubernetes集群 | v1.23.10 | AMD64构架服务器环境下 | +| kube-prometheus stack | 分支 release-0.11 | | +| dcgm-exporter | tag 3.2.5-3.1.7 | | + +# 部署与配置kube-prometheus stack + +## 部署kube-prometheus stack + +**注:**kubernetes与kube-prometheus stack的版本兼容矩阵请查看 https://github.com/prometheus-operator/kube-prometheus?tab=readme-ov-file#compatibility ,请根据自己的kubernetes版本选择合适版本的kube-prometheus stack + +```shell +#下载kube-prometheus代码仓库(此处使用分支 release-0.11) +git clone -b release-0.11 https://github.com/prometheus-operator/kube-prometheus.git +cd kube-prometheus + +#修改下grafana的service类型为NodePort。即在spec下添加type配置项 +vi manifests/grafana-service.yaml +... +spec: + type: NodePort +... +#类似的方法修改prometheus与alertmanager service类型为NodePort,它们的配置文件分别是manifests目录下的prometheus-service.yaml与alertmanager-service.yaml + +#执行部署 +kubectl create -f manifests/setup/ +kubectl create -f manifests/. + +#创建的所有资源对象都在monitorin命名空间下,使用如下命令查看资源对象的运行状态 +kubectl -n monitoring get all +``` + +```shell +#等monitorin命名空间下所有资源对象处于正常运行状态后,使用如下方式获取grafana、prometheus与alertmanager的svc信息 +root@controller01:~/kube-prometheus# kubectl -n monitoring get svc | egrep "NAME|grafana|prometheus-k8s|alertmanager-main" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +alertmanager-main NodePort 10.233.5.65 9093:30093/TCP,8080:30401/TCP 19h +grafana NodePort 10.233.56.112 3000:30300/TCP 19h +prometheus-k8s NodePort 10.233.38.113 9090:30090/TCP,8080:31273/TCP 19h +``` + +​ 此时,假如控制节点的ip是10.0.0.21,则可以分别使用如下url访问grafana、prometheus与alertmanager:http://10.0.0.21:30300 、http://10.0.0.21:30090 、http://10.0.0.21:30093 ,其中访问grafana的默认用户名与密码都是admin + +## 配置grafana + +### 创建数据源ALL + +​ 访问”Configuration“->“Data soutces”页面,创建一个名为"ALL"的数据源,其中HTTP.URL的值保持跟默认创建的数据源“prometheus”中的一样即可为 “http://prometheus-k8s.monitoring.svc:9090” ,然后保存上述数据源“ALL” + +### 导入HAMi默认的dashboard + +​ 访问“Dashboards”->“Browse”页面,导入此dashboard:https://grafana.com/grafana/dashboards/22043-hami-vgpu-metrics-dashboard/ ,grafana中将创建一个名为“hami-vgpu-metrics-dashboard”的dashboard,22043这个编号对应的dashboard在grafana8.5.5与grafana9.1.0验证过,在grafana9.1.0之后应该也能用。此时此页面中有一些Panel如vGPUCorePercentage还没有数据,请继续看完此文档,执行完"部署dcgm-exporter"与“创建ServiceMonitor”中的步骤之后Panel数据将正常显示。 + +​ 对于grafana8.5.5之前的版本如grafana7.5.17,请使用此dashboard:https://grafana.com/grafana/dashboards/21833-hami-vgpu-dashboard/ + +# 部署dcgm-exporter + +```shell +#下载dcgm-exporter代码仓库(未看到与kubernetes的兼容矩阵说明,此处使用tag 3.2.5-3.1.7) +git clone -b 3.2.5-3.1.7 https://github.com/NVIDIA/dcgm-exporter.git +cd dcgm-exporter + +#修改 deployment/values.yaml 文件,为其中的serviceMonitor添加relabelings配置,这样dcgm-exporter的监控指标才有node_name与ip属性 +#只有这一处serviceMonitor,relabelings内的内容都是添加的,添加后内容如下 +root@controller01:~/dcgm-exporter# vi deployment/values.yaml +... +serviceMonitor: + enabled: true + interval: 15s + honorLabels: false + additionalLabels: {} + #monitoring: prometheus + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: dcgm-exporter + replacement: $1 + action: keep + - sourceLabels: [__meta_kubernetes_pod_node_name] + regex: (.*) + targetLabel: node_name + replacement: ${1} + action: replace + - sourceLabels: [__meta_kubernetes_pod_host_ip] + regex: (.*) + targetLabel: ip + replacement: $1 + action: replace +... + +#使用helm工具在monitoring空间下安装dcgm-exporter +root@controller01:~/dcgm-exporter# helm install dcgm-exporter deployment/ -n monitoring + +#查看helm install结果 +root@controller01:~/dcgm-exporter# helm list -n monitoring +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +dcgm-exporter monitoring 1 2024-10-02 16:32:35.691073696 +0800 CST deployed dcgm-exporter-3.1.7 3.1.7 +#还需确认dcgm-exporter 相关的pod已经处于running状态 +root@controller01:~/dcgm-exporter# kubectl -n monitoring get pods | egrep "NAME|dcgm-exporter" +NAME READY STATUS RESTARTS AGE +dcgm-exporter-p4fdp 1/1 Running 0 4h14m +``` + +# 创建ServiceMonitor + +```shell +#创建文件hami-device-plugin-svc-monitor.yaml +root@controller01:~# touch hami-device-plugin-svc-monitor.yaml +#文件hami-device-plugin-svc-monitor.yaml内容如下 +root@controller01:~# cat hami-device-plugin-svc-monitor.yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: hami-device-plugin-svc-monitor + namespace: kube-system +spec: + selector: + matchLabels: + app.kubernetes.io/component: hami-device-plugin + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - path: /metrics + port: monitorport + interval: "15s" + honorLabels: false + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: hami-.* replacement: $1 action: keep - - source_labels: [__meta_kubernetes_pod_node_name] + - sourceLabels: [__meta_kubernetes_pod_node_name] regex: (.*) - target_label: node_name + targetLabel: node_name replacement: ${1} action: replace - - source_labels: [__meta_kubernetes_pod_host_ip] + - sourceLabels: [__meta_kubernetes_pod_host_ip] regex: (.*) - target_label: ip + targetLabel: ip replacement: $1 action: replace -- job_name: 'kubernetes-dcgm-exporter' - kubernetes_sd_configs: - - role: endpoints - relabel_configs: - - source_labels: [__meta_kubernetes_endpoints_name] - regex: dcgm-exporter + +#应用此文件 +root@controller01:~# kubectl apply -f hami-device-plugin-svc-monitor.yaml +``` + +```shell +#创建文件hami-scheduler-svc-monitor.yaml +root@controller01:~# touch hami-device-plugin-svc-monitor.yaml +#文件hami-scheduler-svc-monitor.yaml内容如下 +root@controller01:~# cat hami-scheduler-svc-monitor.yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: hami-scheduler-svc-monitor + namespace: kube-system +spec: + selector: + matchLabels: + app.kubernetes.io/component: hami-scheduler + namespaceSelector: + matchNames: + - "kube-system" + endpoints: + - path: /metrics + port: monitor + interval: "15s" + honorLabels: false + relabelings: + - sourceLabels: [__meta_kubernetes_endpoints_name] + regex: hami-.* replacement: $1 action: keep - - source_labels: [__meta_kubernetes_pod_node_name] + - sourceLabels: [__meta_kubernetes_pod_node_name] regex: (.*) - target_label: node_name + targetLabel: node_name replacement: ${1} action: replace - - source_labels: [__meta_kubernetes_pod_host_ip] + - sourceLabels: [__meta_kubernetes_pod_host_ip] regex: (.*) - target_label: ip + targetLabel: ip replacement: $1 action: replace + +#应用此文件 +root@controller01:~# kubectl apply -f hami-scheduler-svc-monitor.yaml +``` + +```shell +#确认创建的ServiceMonitor +root@controller01:~# kubectl -n kube-system get servicemonitor +NAME AGE +hami-device-plugin-svc-monitor 28h +hami-scheduler-svc-monitor 28h ``` -- 加载 promethues 配置: +# 确认最终监控效果 + +```shell +#创建文件gpu-pod.yaml,尝试使用HAMi虚拟出来的NVIDIA vGPU +root@controller01:~# touch gpu-pod.yaml +root@controller01:~# cat gpu-pod.yaml +apiVersion: v1 +kind: Pod +metadata: + name: gpu-pod-01 +spec: + restartPolicy: Never + containers: + - name: cuda-container + image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 + resources: + limits: + nvidia.com/vgpu: 2 # 请求2个vGPUs + nvidia.com/gpumem: 3000 # 每个vGPU申请3000m显存 (可选,整数类型) + nvidia.com/gpucores: 10 # 每个vGPU的算力为10%实际显卡的算力 (可选,整数类型) -```bash -curl -XPOST http://{promethuesServer}:{port}/-/reload +#应用此文件 +root@controller01:~# kubectl apply -f gpu-pod.yaml +root@controller01:~# kubectl get pods -o wide +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +gpu-pod-01 0/1 Completed 0 52s 10.233.81.70 controller01 ``` + +​ 此时,应该可以dashboard中看到监控详情。内容大概如下 + +![hami-vgpu-metrics-dashboard](../imgs/hami-vgpu-metrics-dashboard.png) \ No newline at end of file diff --git a/docs/gpu-dashboard.json b/docs/gpu-dashboard.json index 2f71c23ea..e5fb491d4 100644 --- a/docs/gpu-dashboard.json +++ b/docs/gpu-dashboard.json @@ -1,1150 +1,1834 @@ -{ - "annotations": { - "list": [ - { - "$$hashKey": "object:192", - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "This dashboard is gpu metrics dashboard base on NVIDIA DCGM Exporter and HAMi/k8s-vgpu-scheduler", - "editable": true, - "gnetId": 12239, - "graphTooltip": 0, - "id": 46, - "iteration": 1694498903162, - "links": [], - "panels": [ - { - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "#EAB839", - "value": 83 - }, - { - "color": "red", - "value": 87 - } - ] - }, - "unit": "celsius" - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 4, - "x": 0, - "y": 0 - }, - "id": 14, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true, - "text": {} - }, - "pluginVersion": "7.5.17", - "targets": [ - { - "expr": "avg(DCGM_FI_DEV_GPU_TEMP{node_name=~\"${node_name}\", gpu=~\"${gpu}\"})", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "GPU平均温度", - "type": "gauge" - }, - { - "cacheTimeout": null, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "max": 2400, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "#EAB839", - "value": 1800 - }, - { - "color": "red", - "value": 2200 - } - ] - }, - "unit": "watt" - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 4, - "x": 4, - "y": 0 - }, - "id": 16, - "links": [], - "options": { - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "sum" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true, - "text": {} - }, - "pluginVersion": "7.5.17", - "targets": [ - { - "expr": "sum(DCGM_FI_DEV_POWER_USAGE{node_name=~\"${node_name}\", gpu=~\"${gpu}\"})", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "GPU总功率", - "type": "gauge" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sort": "current", - "sortDesc": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "DCGM_FI_DEV_GPU_TEMP{node_name=~\"${node_name}\", gpu=~\"${gpu}\"}", - "instant": false, - "interval": "", - "legendFormat": "{{node_name}} gpu{{gpu}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GPU温度", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:97", - "format": "celsius", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:98", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "interval": "", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": false, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "DCGM_FI_DEV_SM_CLOCK{node_name=~\"${node_name}\", gpu=~\"${gpu}\"} * 1000000", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{node_name}} gpu{{gpu}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GPU SM时钟频率(DCGM_FI_DEV_SM_CLOCK)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:462", - "decimals": null, - "format": "hertz", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:463", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 10 - }, - "hiddenSeries": false, - "id": 18, - "legend": { - "avg": true, - "current": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "DCGM_FI_DEV_FB_USED{node_name=~\"${node_name}\", gpu=~\"${gpu}\"}", - "interval": "", - "legendFormat": "{{node_name}} gpu{{gpu}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GPU帧缓存(显存)使用量(DCGM_FI_DEV_FB_USED)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:618", - "format": "decmbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:619", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 10 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "DCGM_FI_DEV_POWER_USAGE{node_name=~\"${node_name}\", gpu=~\"${gpu}\"}", - "interval": "", - "legendFormat": "{{node_name}} gpu{{gpu}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GPU功率消耗(DCGM_FI_DEV_POWER_USAGE)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:214", - "format": "watt", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:215", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 20 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "DCGM_FI_DEV_GPU_UTIL{node_name=~\"${node_name}\", gpu=~\"${gpu}\"}", - "interval": "", - "legendFormat": "{{node_name}} gpu{{gpu}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GPU利用率(DCGM_FI_DEV_GPU_UTIL)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:699", - "format": "percent", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:700", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": { - "uid": "ALL" - }, - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 20 - }, - "hiddenSeries": false, - "id": 26, - "legend": { - "alignAsTable": false, - "avg": true, - "current": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "9.3.14", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "datasource": { - "uid": "ALL" - }, - "exemplar": true, - "expr": "Device_utilization_desc_of_container{node_name=~\"${node_name}\"}", - "interval": "", - "legendFormat": "{{podname}}", - "refId": "A" - } - ], - "thresholds": [], - "timeRegions": [], - "title": "HAMi-pod算力使用率", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:779", - "format": "percent", - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:780", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 20 - }, - "hiddenSeries": false, - "id": 24, - "legend": { - "alignAsTable": false, - "avg": true, - "current": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "Device_memory_desc_of_container{node_name=~\"${node_name}\"}", - "interval": "", - "legendFormat": "{{podname}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "HAMi-pod显存使用量(byte)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:779", - "format": "bytes", - "label": null, - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:780", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 11, - "w": 12, - "x": 0, - "y": 30 - }, - "hiddenSeries": false, - "id": 22, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "HostGPUMemoryUsage{node_name=~\"${node_name}\"}", - "interval": "", - "legendFormat": "{{node_name}} gpu {{deviceid}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "HAMi-节点GPU显存使用量", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1087", - "format": "bytes", - "label": null, - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:1088", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "ALL", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 11, - "w": 12, - "x": 12, - "y": 30 - }, - "hiddenSeries": false, - "id": 20, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.17", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "HostCoreUtilization{node_name=~\"${node_name}\"}", - "interval": "", - "legendFormat": "{{node_name}} gpu {{deviceid}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "HAMi-节点GPU算力使用率", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:1243", - "format": "percent", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:1244", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": false, - "schemaVersion": 27, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "selected": false - }, - "datasource": "ALL", - "definition": "label_values({__name__=~\"DCGM_FI_DEV_FB_FREE|vGPU_device_memory_limit_in_bytes\"}, node_name)", - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": true, - "name": "node_name", - "options": [], - "query": { - "query": "label_values({__name__=~\"DCGM_FI_DEV_FB_FREE|vGPU_device_memory_limit_in_bytes\"}, node_name)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "selected": false, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": "ALL", - "definition": "label_values(DCGM_FI_DEV_FB_FREE{node_name=\"$node_name\"},gpu)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "name": "gpu", - "options": [], - "query": { - "query": "label_values(DCGM_FI_DEV_FB_FREE{node_name=\"$node_name\"},gpu)", - "refId": "ALL-gpu-Variable-Query" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-12h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "k8s-vgpu-scheduler Dashboard", - "uid": "Oxed_c6Wz1", - "version": 3 -} +{ + "__inputs": [ + { + "name": "DS_ALL", + "label": "ALL", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": [], + "__requires": [ + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.5.5" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph (old)", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "$$hashKey": "object:192", + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "This dashboard is gpu metrics dashboard base on NVIDIA DCGM Exporter and HAMi/k8s-vgpu-scheduler This dashboard is gpu metrics dashboard base on NVIDIA DCGM Exporter and HAMi/k8s-vgpu-scheduler, and was modified from https://grafana.com/grafana/dashboards/21833-hami-vgpu-dashboard/ ", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 21833, + "graphTooltip": 0, + "id": null, + "iteration": 1728370823317, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 0, + "y": 0 + }, + "id": 47, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "count(DCGM_FI_DEV_DEC_UTIL{node_name=~\"${node_name}\",UUID=~\"${uuid}\"})", + "instant": true, + "range": false, + "refId": "A" + } + ], + "title": "GPU Total", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 2, + "x": 3, + "y": 0 + }, + "id": 59, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum(count_values(\"DCGM_FI_DEV_XID_ERRORS\", DCGM_FI_DEV_XID_ERRORS{node_name=~\"${node_name}\",UUID=~\"${uuid}\"} > 0)) or on() vector(0)", + "instant": true, + "range": false, + "refId": "A" + } + ], + "title": "XID Error", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 83 + }, + { + "color": "red", + "value": 87 + } + ] + }, + "unit": "celsius" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 5, + "y": 0 + }, + "id": 55, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "avg(DCGM_FI_DEV_GPU_TEMP{node_name=~\"${node_name}\",UUID=~\"${uuid}\"})", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Average GPU Temp", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 2400, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 1800 + }, + { + "color": "red", + "value": 2200 + } + ] + }, + "unit": "watt" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 8, + "y": 0 + }, + "id": 57, + "links": [], + "options": { + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "sum" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "sum(DCGM_FI_DEV_POWER_USAGE{node_name=~\"${node_name}\",UUID=~\"${uuid}\"})", + "instant": true, + "interval": "", + "legendFormat": "", + "range": false, + "refId": "A" + } + ], + "title": "GPU power usage", + "type": "gauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 5, + "w": 13, + "x": 11, + "y": 0 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 150, + "sort": "current", + "sortDesc": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "DCGM_FI_DEV_GPU_TEMP{node_name=~\"${node_name}\",UUID=~\"${uuid}\"}", + "instant": false, + "interval": "", + "legendFormat": "{{node_name}} uid:{{UUID}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GPU temp(DCGM)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:97", + "format": "celsius", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:98", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 0, + "y": 5 + }, + "id": 53, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "instance" + } + ] + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "nodeGPUOverview{nodeid=~\"${node_name}\",deviceuuid=~\"${uuid}\"}", + "instant": true, + "range": false, + "refId": "A" + } + ], + "title": "nodeGPUOverview", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "branch": true, + "container": true, + "dc": true, + "devicecores": true, + "deviceidx": true, + "devicememorylimit": false, + "goversion": true, + "instance": true, + "ip": true, + "job": true, + "namespace": true, + "node_name": true, + "nodeid": false, + "pod": true, + "project": true, + "revision": true, + "sharedcontainers": false, + "zone": true + }, + "indexByName": { + "Time": 2, + "Value": 3, + "dc": 4, + "devicecores": 5, + "deviceidx": 6, + "devicememorylimit": 11, + "devicetype": 10, + "deviceuuid": 12, + "instance": 1, + "ip": 9, + "job": 0, + "node_name": 8, + "nodeid": 7, + "project": 13, + "sharedcontainers": 14, + "zone": 15 + }, + "renameByName": { + "devicememorylimit": "vram", + "devicetype": "", + "node_name": "", + "sharedcontainers": "" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 13, + "x": 11, + "y": 5 + }, + "id": 61, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": true, + "displayName": "instance" + } + ] + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "DCGM_FI_DEV_POWER_USAGE{node_name=~\"${node_name}\", UUID=~\"${uuid}\"}", + "instant": true, + "range": false, + "refId": "A" + } + ], + "title": "nodeGPUList(DCGM)", + "transformations": [ + { + "id": "labelsToFields", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "DCGM_FI_CUDA_DRIVER_VERSION": false, + "DCGM_FI_DEV_BRAND": true, + "DCGM_FI_DEV_MINOR_NUMBER": true, + "DCGM_FI_DEV_NAME": true, + "DCGM_FI_DEV_SERIAL": true, + "DCGM_FI_DRIVER_VERSION": false, + "DCGM_FI_PROCESS_NAME": true, + "Hostname": true, + "Time": true, + "UUID": false, + "Value": true, + "branch": true, + "container": true, + "dc": true, + "device": true, + "devicecores": true, + "deviceidx": true, + "goversion": true, + "gpu": true, + "instance": true, + "ip": true, + "job": true, + "modelName": false, + "namespace": true, + "node_name": false, + "nodeid": false, + "pod": true, + "project": true, + "revision": true, + "sharedcontainers": false, + "zone": true + }, + "indexByName": { + "DCGM_FI_CUDA_DRIVER_VERSION": 11, + "DCGM_FI_DEV_BRAND": 13, + "DCGM_FI_DEV_MINOR_NUMBER": 14, + "DCGM_FI_DEV_NAME": 15, + "DCGM_FI_DEV_SERIAL": 16, + "DCGM_FI_DRIVER_VERSION": 12, + "DCGM_FI_PROCESS_NAME": 17, + "Hostname": 6, + "Time": 1, + "UUID": 19, + "Value": 2, + "dc": 3, + "device": 10, + "gpu": 7, + "instance": 5, + "ip": 18, + "job": 0, + "modelName": 9, + "node_name": 8, + "project": 4 + }, + "renameByName": { + "devicememorylimit": "vram", + "devicetype": "", + "node_name": "", + "sharedcontainers": "" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 0, + "y": 10 + }, + "id": 49, + "interval": "", + "links": [], + "options": { + "displayMode": "basic", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "sum by (deviceuuid, nodename) (vGPUCorePercentage{nodename=~\"${node_name}\"})", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": " {{nodename}}:{{deviceuuid}}", + "refId": "A" + } + ], + "title": "vGPUCorePercentage", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 7, + "x": 11, + "y": 10 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "DCGM_FI_DEV_FB_USED{node_name=~\"${node_name}\", UUID=~\"${uuid}\"}", + "interval": "", + "legendFormat": "{{node_name}} uid:{{UUID}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GPU FB used(DCGM)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:618", + "format": "decmbytes", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:619", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 10 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "DCGM_FI_DEV_GPU_UTIL{node_name=~\"${node_name}\", UUID=~\"${uuid}\"}", + "interval": "", + "legendFormat": "{{node_name}} uid:{{UUID}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GPU util(DCGM)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:699", + "format": "percent", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:700", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 0, + "y": 15 + }, + "id": 51, + "interval": "", + "links": [], + "options": { + "displayMode": "basic", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "sum by (deviceuuid, nodename) (vGPUMemoryPercentage{nodename=~\"${node_name}\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{nodename}}:{{deviceuuid}}", + "refId": "A" + } + ], + "title": "vGPUMemoryPercentage", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 7, + "x": 11, + "y": 18 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "DCGM_FI_DEV_POWER_USAGE{node_name=~\"${node_name}\",UUID=~\"${uuid}\"}", + "interval": "", + "legendFormat": "{{node_name}} uid:{{UUID}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GPU power usage(DCGM)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:214", + "format": "watt", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:215", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "unit": "hertz" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 6, + "x": 18, + "y": 18 + }, + "hiddenSeries": false, + "id": 65, + "interval": "", + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": 80, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "DCGM_FI_DEV_SM_CLOCK{node_name=~\"${node_name}\", UUID=~\"${uuid}\"} * 1000000", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{node_name}} uid:{{UUID}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GPU SM Clock(DCGM)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:536", + "format": "hertz", + "label": "", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:537", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 10, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "index": 0 + }, + { + "color": "red", + "index": 1, + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 11, + "x": 0, + "y": 20 + }, + "id": 36, + "interval": "", + "links": [], + "options": { + "displayMode": "basic", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "text": {} + }, + "pluginVersion": "8.5.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "count by (node_name) (vGPU_device_memory_usage_in_bytes{node_name=~\"${node_name}\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{node_name}}", + "refId": "A" + } + ], + "title": "vgpu used by nodes", + "type": "bargauge" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 11, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 150, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "sum by (podname) (Device_memory_desc_of_container{node_name=~\"${node_name}\",deviceuuid=~\"${uuid}\"})", + "interval": "", + "legendFormat": "{{podname}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HAMi-Memory desc of container ", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:779", + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:780", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "decimals": 150, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 13, + "x": 11, + "y": 25 + }, + "hiddenSeries": false, + "id": 38, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 150, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "sum by (podname) (Device_utilization_desc_of_container{node_name=~\"${node_name}\",deviceuuid=~\"${uuid}\"})", + "interval": "", + "legendFormat": "{{podname}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HAMi-GPU util desc of container", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1243", + "format": "percent", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1244", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 11, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 150, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "HostGPUMemoryUsage{node_name=~\"${node_name}\",deviceuuid=~\"${uuid}\"}", + "interval": "", + "legendFormat": "{{node_name}} uid:{{deviceuuid}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HAMi-Host memory usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1087", + "format": "bytes", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:1088", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 10, + "w": 13, + "x": 11, + "y": 35 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "alignAsTable": false, + "avg": false, + "current": true, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "sideWidth": 150, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.5", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "exemplar": true, + "expr": "HostCoreUtilization{node_name=~\"${node_name}\",deviceuuid=~\"${uuid}\"}", + "interval": "", + "legendFormat": "{{node_name}} uid:{{deviceuuid}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "HAMi-Host core util", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1243", + "format": "percent", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1244", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "5s", + "schemaVersion": 36, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "definition": "label_values({__name__=~\"DCGM_FI_DEV_FB_FREE|vGPU_device_memory_limit_in_bytes\"}, node_name)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "node_name", + "options": [], + "query": { + "query": "label_values({__name__=~\"DCGM_FI_DEV_FB_FREE|vGPU_device_memory_limit_in_bytes\"}, node_name)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_ALL}" + }, + "definition": "label_values(DCGM_FI_DEV_FB_FREE{node_name=~\"$node_name\"},UUID)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "uuid", + "options": [], + "query": { + "query": "label_values(DCGM_FI_DEV_FB_FREE{node_name=~\"$node_name\"},UUID)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-12h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "browser", + "title": "hami-vgpu-metrics-dashboard", + "uid": "Oxed_c6Wz22", + "version": 2, + "weekStart": "" +} \ No newline at end of file diff --git a/imgs/hami-vgpu-metrics-dashboard.png b/imgs/hami-vgpu-metrics-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..0f322f7ebb726f8e060bfc997443ca092aa8912c GIT binary patch literal 130000 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 literal 0 HcmV?d00001