1. 版本申明

版本 修改内容 修改时间
v1.0 初始化,指标说明 5/24/2022
v1.1 更新内存总量指标名称 5/25/2022
v1.2 更新内存指标标签与端口说明 5/30/2022
v1.3 新增告警指标说明 6/20/2022
v1.4 更新告警处理策略说明以及指标内容 6/22/2022
v1.5 填加 部署章节 7/04/2022
v1.6 更新常见问题以及排版 7/13/2022
v1.7 新增power consumption 以及 capability 1/11/2023
v1.8 更新一些格式以及内容 4/8/2024
v1.9 更新一些格式 4/9/2024

2. 简介

Gcu-exporter是一个企业级的Prometheus Exporter,其用于采集Enflame GCU的运行指标,然后将这些指标通过Prometheus展示到Grafana或其他可视化界面以便用户获取设备的运行指标与告警信息。 Gcu-exporter 依赖于EFML(Enflame Management Library)获取Enflame GCU的运行指标信息,除了支持Enflame的训练加速卡之外同时也支持推理加速卡。

3. 查看版本号

执行./gcu-exporter –version,即可查看版本号。

4. 端口

  • gcu-exporter 的默认端口为 “9400”

  • 通过 web.listen-address" 可以修改端口,例如 “gcu-exporter –web.listen-address=:9402”

5. 指标说明

5.1. enflame_gcu_usage

指标说明

  • enflame_gcu_usage:GCU整卡利用率

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_usage{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 80
  • enflame_gcu_usage 值 80,表明GCU当前利用率 80%

  • busid:Bus总线号为 0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.2. enflame_gcu_memory_total_bytes

指标说明

  • enflame_gcu_memory_total_bytes:GCU 内存总量,单位Byte

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_memory_total_bytes{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 1.7179869184e+10
  • enflame_gcu_memory_total_bytes值 1.7179869184e+10,表明GCU当前内存总量为1.7179869184e+10 bytes

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.3. enflame_gcu_memory_used_bytes

指标说明

  • enflame_gcu_memory_used_bytes:GCU 当前内存使用量,单位Byte

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_memory_used_bytes{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 1073741824
  • enflame_gcu_memory_used_bytes值 1073741824,表明GCU当前内存使用量为1073741824 bytes

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.4. enflame_gcu_memory_usage

指标说明

  • enflame_gcu_memory_usage:GCU 内存利用率

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_memory_usage{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 0.00982666015625
  • enflame_gcu_memory_usage值 0.00982666015625,表明GCU当前内存总量为0.98%,例如当内存使用量为161MB,内存总量为16GB时,利用率计算公式为161/16*1024=0.00982666015625,约等于0.98%

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.5. enflame_gcu_count

指标说明

  • enflame_gcu_count:主机内GCU 卡数,默认为8

标签说明

  • host :主机名称

示例

enflame_gcu_count{host="sse-lab-inspur-043"} 8
  • enflame_gcu_count值8,表明当前主机内加速卡数量为8

  • host :主机名称sse-lab-inspur-043

5.6. enflame_gcu_clock

指标说明

  • enflame_gcu_clock:GCU 加速卡的时钟频率

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • power_mode: 加速卡电源工作模式,分为”Sleep”模式与”Active”模式

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_clock{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_ame="pod-gcu-example",pod_namespace="enflame",power_mode="Active",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 1150
  • enflame_gcu_clock值 1150,表明GCU当前时钟频率为1150 MHz

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • power_mode: 加速卡当前电源工作模式为”Active”

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.7. enflame_gcu_temperatures

指标说明

  • enflame_gcu_temperatures:GCU 加速卡的温度

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_temperatures{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"}  34.5
  • enflame_gcu_temperatures值 34.5,表明GCU加速卡当前温度为34.5度

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.8. enflame_gcu_power_usage

指标说明

  • enflame_gcu_power_usage:GCU 加速卡的电源利用率

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_power_usage{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 22.22222328186035
  • enflame_gcu_power_usage值22.22222328186035 ,表明GCU加速卡当前电源利用率为22.22%

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.9. enflame_gcu_power_consumption

指标说明

  • enflame_gcu_power_consumption:GCU 加速卡的当前电源消耗量

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_power_consumption{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 56.0
  • enflame_gcu_power_consumption值56.0,表明GCU加速卡当前电源消耗量为56.0W

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.10. enflame_gcu_power_capability

指标说明

  • enflame_gcu_power_capability:GCU 加速卡的电源总功耗量

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_power_capability{busid="0000:40:00.0",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 225
  • enflame_gcu_power_capability值225,表明GCU加速卡当前电源总功耗为225W

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.11. enflame_gcu_health

指标说明

  • enflame_gcu_health:GCU 加速卡健康状态, 值为2时表示healthy状态,值为1时表示unhealthy状态,值为0时表示unknown状态

标签说明

  • busid :bus总线号

  • host :主机名称

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

  • healthmsg: GCU加速卡状态信息

示例

enflame_gcu_health{busid="0000:40:00.0",healthmsg="Healthy",host="sse-lab-inspur-043",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 2
  • enflame_gcu_health值2,表明当前GCU加速卡的处于Healthy状态

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

  • healthmsg: 值为Healthy代表GCU加速卡处于健康状态

5.12. enflame_gcu_ecc_double_bit_error_total_count

指标说明

  • enflame_gcu_ecc_double_bit_error_total_count:GCU 加速卡ECC DBE 累计总数,DBE 会触发加速卡内存 row remapping RAS机制进行修复,因此这个指标不建议作为告警参考。

标签说明

  • busid :bus总线号

  • host :主机名称

  • metrics:指标

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_ecc_double_bit_error_total_count{busid="0000:40:00.0",host="sse-lab-inspur-043",metrics="ecc_double_bit_error_total_count",minor_number="2",name="Enflame T10",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 0
  • enflame_gcu_ecc_double_bit_error_total_count值0,表明当前GCU加速卡的ECC DBE总数为0

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • metrics:指标为ecc_double_bit_error_total_count

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.13. enflame_gcu_ecc_single_bit_error_total_count

指标说明

  • enflame_gcu_ecc_single_bit_error_total_count:GCU 加速卡ECC SBE 累计总数

标签说明

  • busid :bus总线号

  • host :主机名称

  • metrics:指标

  • minor_number:设备号,卡号

  • name:加速卡设备型号

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_ecc_single_bit_error_total_count{busid="0000:40:00.0",host="sse-lab-inspur-043",metrics="ecc_single_bit_error_total_count",minor_number="2",name="Enflame T10",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 0
  • enflame_gcu_ecc_single_bit_error_total_count值0,表明当前GCU加速卡的ECC SBE 总数为0

  • busid :bus总线号为0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • metrics:指标为ecc_single_bit_error_total_count

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.16. enflame_gcu_cluster_usage

指标说明

  • enflame_gcu_cluster_usage:GCU 片上Cluster 利用率

标签说明

  • busid :bus总线号

  • host :主机名称

  • cluster: GCU 片上cluser号

  • metrics: 指标名称

  • minor_number:设备号,当前 GCU cluster所属GCU卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_cluster_usage{busid="0000:40:00.0",cluster="0",host="sse-lab-inspur-043",metrics="cluster_usage",minor_number="2",name="Enflame T10",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 80
  • enflame_gcu_cluster_usage 值 80,表明GCU Cluster当前利用率 80%

  • busid:Bus总线号为 0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • cluster: GCU 片上cluser号 为 0

  • metrics: 指标名称 cluster_usage

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame T10

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

5.17. enflame_gcu_pg_usage(仅限i系列推理卡)

指标说明

  • enflame_gcu_pg_usage:GCU 片上PG 利用率

标签说明

  • busid :bus总线号

  • host :主机名称

  • pg: GCU 片上pg号

  • metrics: 指标名称

  • minor_number:设备号,当前 GCU pg所属GCU卡号

  • name:加速卡设备型号

  • pod_name:加速卡所在的k8s pod 名称

  • pod_namespace: 加速卡pod所在k8s命名空间

  • slot:设备槽号

  • uuid : 加速卡uuid

示例

enflame_gcu_pg_usage{busid="0000:40:00.0",pg="0",host="sse-lab-inspur-043",metrics="pg_usage",minor_number="2",name="Enflame I20",pod_name="pod-gcu-example",pod_namespace="enflame",slot="PCIE3_GPU",uuid="GCU-U53000080105"} 80
  • enflame_gcu_pg_usage 值 80,表明GCU PG当前利用率 80%

  • busid:Bus总线号为 0000:40:00.0

  • host :主机名称sse-lab-inspur-043

  • pg: GCU 片上cluser号 为 0

  • metrics: 指标名称 pg_usage

  • minor_number:设备号即卡号等于 2

  • name:加速卡设备型号为Enflame I20

  • pod_name:加速卡所在的k8s pod 名称 为 pod-gcu-example

  • pod_namespace: 加速卡pod所在k8s命名空间为enflame

  • slot:设备卡槽为PCIE3_GPU

  • uuid : 加速卡uuid 为 GCU-U53000080105

6. 告警与处理

6.1. enflame_gcu_health == 1,致命告警

  • 告警说明:enflame_gcu_health == 1表示 gcu处于非健康状态,enflame_gcu_health 值为2时表示healthy状态,值为1时表示unhealthy状态,值为0时表示unknown状态

  • 处理策略:当前触发unhealthy,说明加速卡触发RMA故障,建议走RMA流程,当前unhealthy 只依赖于RMA 标识,其他可自动修复(比如hot reset 修复)的告警指标不作为unhealthy状态,因此unhealthy 不大会触发误报

6.2. enflame_gcu_temperatures > 95,严重告警

  • 告警说明:enflame_gcu_temperatures > 95, 表示当前gcu卡子的温度超过95°,温度过高,这会触发自动降频行为

  • 处理策略:检查设备的降温情况

6.3. enflame_gcu_count < 正常值, 严重告警

  • 告警说明:enflame_gcu_count < 正常值,比如enflame_gcu_count < 8,服务器里的 gcu可能掉卡,卡子个数要根据实际的服务器配置情况调整

  • 处理策略:采用其他功能更强的工具,比如efsmi 检查服务器内的加速卡个数,再根据具体情况进行处理

7. 部署

7.1. 裸机部署

首先确定机器上已经安装efsmi,然后再直接执行 ./gcu-exporter,步骤如下:

# ./gcu-exporter
Starting HTTP server on :9400

在gcu-exporter服务拉起后,在浏览器上输入 本机 ${IP}:9400 即可看到相应指标。

注:

gcu-exporter 获取 slot信息依赖于dmidecode,如果主机系统里没安装dmidecode,需要先装上,例如:

# apt-get update && apt-get install -y dmidecode

7.2. Docker部署

首先在安装包目录下执行 build-image.sh构建 gcu-exporter:latest镜像,步骤如下:

gcu-exporter_x.x.x# ls
docker  build-image.sh  gcu-exporter  libefml  LICENSE.md  README.md  yaml
#./build-image.sh

Sending build context to Docker daemon  45.14MB
Step 1/5 : FROM ubuntu:18.04
 ---> 35b3f4f76a24
Step 2/5 : RUN apt-get update && apt-get install -y dmidecode
 ---> Using cache
 ---> ea0682fd7490
Step 3/5 : COPY gcu-exporter /usr/bin/
 ---> bb6436b218c5
Step 4/5 : EXPOSE 9400
 ---> Running in e18ca253bf61
Removing intermediate container e18ca253bf61
 ---> 2772b415bec9
Step 5/5 : ENTRYPOINT ["/usr/bin/gcu-exporter"]
 ---> Running in f2218ec5be65
Removing intermediate container f2218ec5be65
 ---> 0c26afa1171f
Successfully built 0c26afa1171f
Successfully tagged artifact.enflame.cn/enflame_docker_images/enflame/gcu-exporter:latest

在构建好镜像后,再直接执行 docker run 拉起gcu-exporter服务,例如:

# docker run  --privileged -d --name=gcu-exporter -v /usr/local/efsmi:/usr/local/efsmi -v /usr/lib/libefml.so:/usr/lib/libefml.so -v /var/lock:/var/lock -v /etc/localtime:/etc/localtime -v /sys:/sys -p 9400:9400 --network host artifact.enflame.cn/enflame_docker_images/enflame/gcu-exporter:latest

如果是 ARM 平台, 若 /usr/lib/libefml.so 不存在,但 /usr/lib/libefml-arm.so 存在,则需执行以下步骤:
# docker run  --privileged -d --name=gcu-exporter -v /usr/local/efsmi:/usr/local/efsmi -v /usr/lib/libefml-arm.so:/usr/lib/libefml.so -v /var/lock:/var/lock -v /etc/localtime:/etc/localtime -v /sys:/sys -p 9400:9400 --network host artifact.enflame.cn/enflame_docker_images/enflame/gcu-exporter:latest

如此,在gcu-exporter服务拉起后,在浏览器上输入 本机 ${IP}:9400 即可看到相应指标。

注:

1)gcu-exporter 获取 slot信息依赖于dmidecode,如果构建的镜像里没安装dmidecode,需要先装上,例如在docker/Dockerfile.ubuntu里添加:

RUN apt-get update && apt-get install -y dmidecode

2)build-image.sh 里的gcu-exporter镜像路径以及名称需要根据实际情况修改或定制

7.3. K8S部署

假设k8s已经部署好,那么需要先在安装包目录下执行 build-image.sh构建 gcu-exporter:latest镜像,步骤如下:

gcu-exporter_x.x.x# ls
docker  build-image.sh  gcu-exporter  libefml  LICENSE.md  README.md  yaml
#./build-image.sh
Sending build context to Docker daemon  45.14MB
Step 1/5 : FROM ubuntu:18.04
 ---> 35b3f4f76a24
Step 2/5 : RUN apt-get update && apt-get install -y dmidecode
 ---> Using cache
 ---> ea0682fd7490
Step 3/5 : COPY gcu-exporter /usr/bin/
 ---> bb6436b218c5
Step 4/5 : EXPOSE 9400
 ---> Running in e18ca253bf61
Removing intermediate container e18ca253bf61
 ---> 2772b415bec9
Step 5/5 : ENTRYPOINT ["/usr/bin/gcu-exporter"]
 ---> Running in f2218ec5be65
Removing intermediate container f2218ec5be65
 ---> 0c26afa1171f
Successfully built 0c26afa1171f
Successfully tagged artifact.enflame.cn/enflame_docker_images/enflame/gcu-exporter:latest

然后再直接执行 kubectl apply 拉起gcu-exporter服务,例如:

#kubectl apply -f yaml/gcu-exporter.yaml

上述脚本需要在特权模式下运行,如果需要在非特权模式下运行,可以执行以下脚本:

#kubectl apply -f yaml/gcu-exporter-non-privileged.yaml

不过需要注意的是该方案依赖于k8s集群有配置enflame-container-toolkit组件,具体实现见container-toolkit文档

在gcu-exporter服务拉起后,在浏览器上输入 本机 ${IP}:9400 即可看到相应指标。

其中gcu-exporter 获取 slot信息依赖于dmidecode,如果构建的镜像里没安装dmidecode,需要先装上,例如在docker/Dockerfile.ubuntu里添加:

RUN apt-get update && apt-get install -y dmidecode

8. 常见问题

1)非特权模式缺失slot号

受限于底层SLOT接口的权限要求,目前gcu-exporter在非特权模式下不支持slot号的展示。

2)依赖于底层什么库?

gcu-exporter 基于 go-eflib 实现,然后go-eflib 调用的 libefml.so,而libefml.so 是从efsmi 安装包里头获取的。 如果是ARM平台,则是 libefml-arm.so,如果不存在 /usr/lib/libefml.so,需要保持名称兼容:ln -sf /usr/lib/libefml-arm.so /usr/lib/libefml.so

3)出现Oops!信息

出现类似以下的oops log,这是 gcu-exporter里头调用libefml.so读取到的GCU个数与从enflame driver里读取到的GCU个数不匹配(比如测试场景 :在OS里手工 remove 掉一个卡:echo 1 > /sys/bus/pci/devices/0000\:3e\:00.0/remove)。

Oops! Check device count error:xxxx, the exporter needs to be restarted

为了避免访问不存在的gcu 设备造成未知的异常问题,这里 打印出一个 oops信息,在k8s部署场景下,gcu-exporter 是一个daemon pod会被k8s自己重新拉起。而在裸机部署以及docker部署场景下,需要手工再拉起 gcu-exporter服务,当然 docker 也可以采用--restart=always参数来达成自动拉起gcu-exporter服务。

8.1. 关于版本号

版本号遵循的是 MAJOR.MINOR.BUILT 的格式: 1)MAJOR 版本发生改变,表示接口发生变化; 2)MINOR 版本发生变化,表示新增了特性或功能; 3)BUILT 版本发生变化,表示安装包编译日期发生变化或进行了BUG修复。