LogoTensorFusion 文档
LogoTensorFusion 文档
首页

快速开始

TensorFusion 概览在 Kubernetes 安装在虚拟机/服务器安装(K3S)Helm 快速安装在宿主机/虚拟机安装TensorFusion 架构

应用操作

创建 AI 应用注解使用场景配置自动扩缩容迁移现有应用最佳实践

自定义AI基础设施

生产级部署指南QoS 级别与计价云厂商集成(BYOC)管理许可证

维护与优化

组件更新配置告警GPU 热迁移预加载模型优化 GPU 效率

故障排除

问题处理手册链路追踪/性能分析查询指标和日志

参考

Helm 安装 Values 配置
Kubernetes 事件监控指标定义性能测试命令行参考GPU/驱动/操作系统支持矩阵TensorFusion 安全白皮书

对比

与 NVIDIA vGPU 对比与 MIG/MPS 对比与趋动科技对比与 NVIDIA Run:ai 对比与 HAMi 的对比
系统管理员参考

监控指标定义

TensorFusion 把指标和组件日志写入 GreptimeDB,共 9 张表,表名都以 tf_ 开头。本页列出每张表的标签和字段,写看板、告警规则、成本报表的 SQL 时可以直接查。

指标怎么采集

来源表采集间隔
Controllertf_system_metrics、tf_pool_metrics、tf_node_metrics、tf_gpu_metrics、tf_worker_resources、tf_gpu_allocation1 分钟
Hypervisor(每个 GPU 节点一个)tf_gpu_usage、tf_worker_usage默认 1 分钟,由 Hypervisor 启动参数 -metrics-interval 设置
Vector(日志采集)tf_system_log持续采集

Controller 和 Hypervisor 先把指标追加到本地文件,Vector sidecar 读取文件,再按 InfluxDB 行协议写入 GreptimeDB。除非你把 chart 指向集群外的 GreptimeDB,否则指标不出集群。

Helm values 的 dynamicConfig 下有 3 个配置项控制这条链路:

配置项默认值含义
metricsTTL30d所有 tf_ 表的数据保留时间。修改后无需重启即可生效。
metricsFormatinflux写入指标文件的行格式,可选 influx、json、otel。chart 自带的 Vector 配置只接收 influx。
metricsExtraPodLabels{}Pod 标签名到指标标签名的映射。列出的 Pod 标签会作为额外标签写入 tf_worker_resources 和 tf_gpu_allocation。

约定

  • 标签(Tag)用来标识一条时间序列,带索引;字段(Field)是采集到的数值。
  • 每张表都有一个时间索引列 greptime_timestamp,写入精度为毫秒。由早期版本启动时建表语句建出来的表用的是 ts;用 SELECT table_name, column_name FROM information_schema.columns WHERE semantic_type = 'TIMESTAMP'; 可以确认集群里是哪一个。
  • 算力单位是 FP16 TFLOPS,显存单位是字节。名字里带 percent 或 percentage 的字段取值范围是 0 到 100。
  • “已分配(allocated)”指工作负载 requests 之和,“已限额(limited)”指工作负载 limits 之和。
  • “虚拟容量”等于物理容量乘以 GPU 池的超卖比例。

集群和 GPU 池

tf_system_metrics

调度和扩缩容计数器,每个 GPU 池一行。计数从 Controller 启动开始累加,Controller 重启后归零,查询时请取一段时间内的差值。

标签说明
poolGPUPool 名称
字段类型说明
total_workers_cntint64GPU 池中正在运行的 worker 数量
total_nodes_cntint64GPU 池中的 GPU 节点数量
total_allocation_success_cntint64GPU 分配成功次数
total_allocation_fail_cntint64GPU 分配失败次数
total_scale_up_cntint64预留给扩容事件。当前版本不累加,恒为 0。
total_scale_down_cntint64预留给缩容事件。当前版本不累加,恒为 0。
total_topo_satisfied_cntint64至少有一个节点满足 GPU 拓扑要求的调度次数
total_topo_unsatisfied_cntint64没有节点满足 GPU 拓扑要求的调度次数
total_topo_fallback_cntint64降级到更宽松拓扑的调度次数
total_topo_search_degraded_cntint64拓扑搜索以降级模式运行的调度次数

调度器为该 GPU 池处理过至少一次分配后,才会写入 4 个 total_topo_* 字段。

tf_pool_metrics

每个 GPU 池的容量和分配汇总。

标签说明
poolGPUPool 名称
phaseGPUPool 所处阶段
字段类型说明
allocated_tflopsfloat64工作负载请求的算力
allocated_tflops_percentfloat64请求算力占物理容量的百分比
allocated_tflops_percent_virtualfloat64请求算力占虚拟容量的百分比
allocated_vram_bytesfloat64工作负载请求的显存
allocated_vram_percentfloat64请求显存占物理容量的百分比
allocated_vram_percent_virtualfloat64请求显存占虚拟容量的百分比
limited_tflopsfloat64工作负载算力 limits 之和
limited_tflops_percent_virtualfloat64算力 limits 占虚拟容量的百分比
limited_vram_bytesfloat64工作负载显存 limits 之和
limited_vram_percent_virtualfloat64显存 limits 占虚拟容量的百分比
gpu_countint64GPU 池中的 GPU 数量

节点和 GPU

tf_node_metrics

每个 GPU 节点的分配情况和硬件成本。

标签说明
nodeGPUNode 名称
poolGPUPool 名称
phaseGPUNode 所处阶段
字段类型说明
allocated_tflopsfloat64节点上工作负载请求的算力
allocated_tflops_percentfloat64请求算力占节点物理容量的百分比
allocated_tflops_percent_virtualfloat64请求算力占节点虚拟容量的百分比
allocated_vram_bytesfloat64节点上工作负载请求的显存
allocated_vram_percentfloat64请求显存占节点物理容量的百分比
allocated_vram_percent_virtualfloat64请求显存占节点虚拟容量的百分比
gpu_countint64节点上的 GPU 数量
raw_costfloat64上次采样以来节点 GPU 的硬件成本,单位美元,按每种 GPU 型号的小时单价计算

tf_gpu_metrics

调度器视角下每张 GPU 的容量和分配情况。

标签说明
gpuGPU 资源名称
nodeGPUNode 名称
poolGPUPool 名称
gpu_modelGPU 型号,例如 A10G
phaseGPU 所处阶段
字段类型说明
capacity_tflopsfloat64GPU 的算力容量
available_tflopsfloat64尚未被请求的算力
allocated_tflopsfloat64工作负载请求的算力
allocated_tflops_percentfloat64请求算力占容量的百分比
capacity_vram_bytesfloat64GPU 的显存容量
available_vram_bytesfloat64尚未被请求的显存
allocated_vram_bytesfloat64工作负载请求的显存
allocated_vram_percentfloat64请求显存占容量的百分比

tf_gpu_usage

每张物理 GPU 的硬件读数,由 Hypervisor 通过厂商库采集。

标签说明
uuidGPU UUID,小写
nodeGPUNode 名称
poolGPUPool 名称
字段类型说明
compute_percentagefloat64GPU 利用率
memory_bytesint64已用显存
temperaturefloat64GPU 温度,单位 °C
power_usagefloat64功耗,单位瓦
rxfloat64PCIe 接收吞吐,单位字节每秒
txfloat64PCIe 发送吞吐,单位字节每秒
memory_percentagefloat64预留字段。当前 Hypervisor 上报 0,请用 memory_bytes 除以 tf_gpu_metrics 的 capacity_vram_bytes 计算。
compute_tflopsfloat64预留字段。当前 Hypervisor 上报 0。

表里还有 graphics_clock_mhz、sm_clock_mhz、memory_clock_mhz、video_clock_mhz、nvlink_rx、nvlink_tx 这几列。只有厂商库把它们作为扩展指标上报时才有值;自带的 NVIDIA 库不上报,所以通常为空。

工作负载

tf_worker_resources

每个 worker Pod 的 requests、limits 和计费成本,由 Controller 记录。

标签说明
workerworker Pod 名称
workloadTensorFusionWorkload 名称
namespaceworker 所在命名空间
poolGPUPool 名称
qosQoS 等级:low、medium、high、critical,默认 medium
字段类型说明
tflops_requestfloat64每张 GPU 的算力 request
tflops_limitfloat64每张 GPU 的算力 limit
vram_bytes_requestfloat64每张 GPU 的显存 request
vram_bytes_limitfloat64每张 GPU 的显存 limit
gpu_countint64分配给 worker 的 GPU 数量
raw_costfloat64上次采样以来 worker 的费用,单位美元,按 GPU 池的 QoS 定价计算。GPU 池没有为该 QoS 等级定价时为 0。
readyboolworker Pod 是否就绪

raw_cost 是增量,不是累计值。要得到某段时间的费用,对这段时间内的值求和。

tf_worker_usage

每个 worker 在每张 GPU 上的实际用量,由 Hypervisor 测量。使用两张 GPU 的 worker 每次采样产生两行。

标签说明
workerworker 的 Pod UID
pod_nameworker Pod 名称
workloadTensorFusionWorkload 名称,取不到时为 unknown
namespaceworker 所在命名空间
poolGPUPool 名称
nodeGPUNode 名称
uuid这一行对应的 GPU UUID
字段类型说明
compute_percentagefloat64worker 各进程的 GPU 利用率之和
memory_bytesint64worker 各进程占用的显存
memory_percentagefloat64已用显存占 worker 显存 limit 的百分比
compute_tflopsfloat64预留字段。当前 Hypervisor 上报 0。

表结构里还有 compute_throttled_cnt、vram_freezed_cnt、vram_resumed_cnt 三列,当前 Hypervisor 不写入。

注意:worker 在 tf_worker_resources 里是 Pod 名称,在 tf_worker_usage 里是 Pod UID。关联两张表时,用 tf_worker_resources.worker 匹配 tf_worker_usage.pod_name。

tf_gpu_allocation

每个 Pod 占用了哪些 GPU,每个 Pod 一行。

标签说明
podPod 名称
namespacePod 所在命名空间
pod_uuidPod UID
nodePod 所在节点
gpu_name已分配 GPU 的名称,逗号分隔
gpu_model_index型号:序号 列表,逗号分隔,例如 A10G:0,A10G:1
字段类型说明
gpu_countint64分配给 Pod 的 GPU 数量

日志

tf_system_log

Controller、Hypervisor 和 worker 的容器日志,由 Vector 采集。

列类型说明
componentstringPod 标签 tensor-fusion.ai/component 的值:operator、hypervisor 或 worker
namespacestringPod 所在命名空间
podstringPod 名称
containerstring容器名称
messagestring日志内容,带全文索引
streamstringstdout 或 stderr
timestampstring日志写入时间
greptime_timestamptimestamp时间索引,精度为毫秒

查询示例

最近 1 小时各工作负载请求的显存和实际用到的显存峰值:

SELECT r.workload,
       max(r.vram_bytes_request) AS requested_bytes,
       max(u.memory_bytes)       AS peak_used_bytes
FROM tf_worker_resources r
JOIN tf_worker_usage u ON r.worker = u.pod_name
WHERE r.greptime_timestamp > now() - INTERVAL '1 hour'
  AND u.greptime_timestamp > now() - INTERVAL '1 hour'
GROUP BY r.workload;

最近 1 天各命名空间的费用:

SELECT namespace, sum(raw_cost) AS cost_usd
FROM tf_worker_resources
WHERE greptime_timestamp > now() - INTERVAL '1 day'
GROUP BY namespace;

下一步

  • 查询指标和日志:如何连接 GreptimeDB。
  • 配置告警:基于这些表编写告警规则。

Kubernetes 事件

上一页

性能测试

下一页

目录

指标怎么采集
约定
集群和 GPU 池
tf_system_metrics
tf_pool_metrics
节点和 GPU
tf_node_metrics
tf_gpu_metrics
tf_gpu_usage
工作负载
tf_worker_resources
tf_worker_usage
tf_gpu_allocation
日志
tf_system_log
查询示例
下一步