跳至内容

资源持续时间

v2.7 及更高版本

Argo Workflows 会显示您的工作流已使用的资源量并保存此信息。该数值旨在作为参考而非精确值。

计算

计算结果始终是一个估计值,由duration.go根据容器运行时长、指定的Pod资源请求量、限制值或(针对内存和CPU的)默认值计算得出。

每个指标根据资源类型除以一个共同的分母。

基础金额

每种资源类型都有一个分母,用于将较大的数值缩小。

  • CPU: 1
  • 内存: 100Mi
  • 存储容量: 10Gi
  • 临时存储: 10Gi
  • 其他所有情况: 1

请求的基础金额比例将乘以容器的运行时间,以获取容器的资源持续时间。

例如,如果您请求了50Mi内存(基础量的一半),而容器运行了120秒,那么报告的Resource Duration将是60sec * (100Mi memory)

请求默认值

如果未为容器设置requests,Kubernetes会默认使用limits。如果未设置limits, Argo会回退到CPU使用100m,内存使用100Mi

注意:这些是Argo的默认设置,并非Kubernetes的默认设置。为了获得最有意义的结果,请为所有容器设置requests和/或limits

示例

一个运行3分钟的pod,CPU限制为2000m,内存限制为1Gi,并且nvidia.com/gpu资源限制为1

CPU:    3min * 2000m / 1000m = 6min * (1 cpu)
Memory: 3min * 1Gi / 100Mi   = 30min * (100Mi memory)
GPU:    3min * 1     / 1     = 3min * (1 nvidia.com/gpu)

Web/CLI 报告

无论是网页界面还是命令行界面,都会显示简略的资源使用情况,例如9m10s*cpu,6s*memory,2m31s*nvidia.com/gpu。在此上下文中,像memory这样的资源指的是"基础用量"。

例如,memory表示"资源请求100Mi内存的时间量"。如果容器仅使用10Mi,则其运行的每一秒仅计为memory的十分之一秒。

向下取整

对于运行时间较短的Pod(小于10秒),如果内存请求也很小(例如10Mi),那么内存值可能显示为0。这是因为分母是100Mi


有问题吗?

Search on GitHub Discussions and Slack.