Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Melhores práticas para monitorar recursos de GPU do cluster

Última atualização: Aug 25, 2026

Use o NVIDIA DCGM para monitorar nós de GPU nos modos de solicitação de placa inteira, memória da GPU e poder de computação.

Pré-requisitos

Contexto

O monitoramento de GPU oferece painéis nos níveis de cluster, nó e Pod para nós com GPU. Consulte Dashboard description.

  • O painel no nível de cluster exibe métricas globais ou por pool de nós, como utilização, uso de memória da GPU e erros XID.

  • O painel no nível de nó apresenta detalhes específicos de cada nó, incluindo utilização e consumo de memória da GPU.

  • O painel no nível de Pod mostra os recursos de GPU solicitados e a utilização individual de cada Pod.

As seções a seguir demonstram os resultados de monitoramento para três modos de solicitação de GPU.

image

Observações de uso

  • A coleta de métricas de GPU ocorre a cada 15 segundos, o que pode causar atrasos nos dados do painel do Grafana. O painel pode indicar ausência de memória de GPU disponível em um nó mesmo quando um Pod ainda está agendado nele. Isso acontece quando um Pod libera recursos de GPU entre as coletas e o agendador aloca um Pod pendente antes da próxima varredura.

  • O painel de monitoramento rastreia apenas os recursos de GPU solicitados por meio do campo resources.limits na especificação do Pod. Consulte Gerenciar recursos para contêineres.

    Os dados do painel podem ser imprecisos se você utilizar recursos de GPU das seguintes maneiras:

    • Executar aplicações com GPU diretamente no nó.

    • Iniciar um contêiner via docker run para executar uma aplicação com GPU.

    • Definir a variável NVIDIA_VISIBLE_DEVICES na seção env do Pod para solicitar recursos, como em NVIDIA_VISIBLE_DEVICES=all ou NVIDIA_VISIBLE_DEVICES=<GPU ID>.

    • Executar programas com GPU em Pods configurados com privileged: true no securityContext.

    • Executar programas com GPU em Pods sem a definição de NVIDIA_VISIBLE_DEVICES, onde a imagem do contêiner adota o padrão NVIDIA_VISIBLE_DEVICES=all.

  • A memória de GPU alocada difere da memória efetivamente utilizada. Por exemplo, se uma placa possui 16 GiB no total e você aloca 5 GiB para um Pod que executa sleep 1000, ele permanece no estado Running sem usar a GPU. Nesse caso, a memória alocada é de 5 GiB, mas a memória utilizada é 0 GiB.

Etapa 1: Criar pools de nós

O painel de monitoramento de GPU exibe métricas para Pods que solicitam recursos por placa inteira, memória da GPU ou poder de computação.

Crie três pools de nós para demonstrar o agendamento de Pods e o uso de recursos em cada modo de solicitação de GPU. Para obter instruções, consulte Create a node pool. Configure os pools de nós conforme descrito abaixo:

Parâmetro

Descrição

Exemplo

Node Pool Name

Nome do primeiro pool de nós.

exclusive

Nome do segundo pool de nós.

share-mem

Nome do terceiro pool de nós.

share-mem-core

Instance Type

Tipo de instância. O projeto TensorFlow Benchmark requer 10 GiB de memória de GPU; portanto, o tipo de instância deve oferecer mais de 10 GiB.

ecs.gn7i-c16g1.4xlarge

Expected Nodes

Quantidade de nós no pool.

1

Node Labels

Para solicitações de placa inteira. Nenhum rótulo necessário.

None

Solicita recursos de GPU por memória.

ack.node.gpu.schedule=cgpu

Solicita recursos de GPU por memória com alocação de poder de computação.

ack.node.gpu.schedule=core_mem

Etapa 2: Implantar aplicações com GPU

Após criar os pools de nós, execute jobs de teste com GPU para verificar se a coleta de métricas funciona corretamente. Consulte Enable scheduling para detalhes sobre rótulos e agendamento. Os três jobs são:

Nome

Pool de nós

Recursos de GPU

tensorflow-benchmark-exclusive

exclusive

nvidia.com/gpu: 1

Solicita uma placa de GPU.

tensorflow-benchmark-share-mem

share-mem

aliyun.com/gpu-mem: 10

Solicita 10 GiB de memória de GPU.

tensorflow-benchmark-share-mem-core

share-mem-core

  • aliyun.com/gpu-mem: 10

  • aliyun.com/gpu-core.percentage: 30

Solicita 10 GiB de memória de GPU e 30% do poder de computação de uma placa.

  1. Crie os arquivos de manifesto dos Jobs.

    • Crie um arquivo chamado tensorflow-benchmark-exclusive.yaml.

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-benchmark-exclusive
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-benchmark-exclusive
          spec:
            containers:
            - name: tensorflow-benchmark
              image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
              command:
              - bash
              - run.sh
              - --num_batches=5000000
              - --batch_size=8
              resources:
                limits:
                  nvidia.com/gpu: 1 # Requests one GPU card.
              workingDir: /root
            restartPolicy: Never
    • Crie um arquivo chamado tensorflow-benchmark-share-mem.yaml.

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-benchmark-share-mem
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-benchmark-share-mem
          spec:
            containers:
            - name: tensorflow-benchmark
              image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
              command:
              - bash
              - run.sh
              - --num_batches=5000000
              - --batch_size=8
              resources:
                limits:
                  aliyun.com/gpu-mem: 10 # Requests 10 GiB of GPU memory.
              workingDir: /root
            restartPolicy: Never
    • Crie um arquivo chamado tensorflow-benchmark-share-mem-core.yaml.

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-benchmark-share-mem-core
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-benchmark-share-mem-core
          spec:
            containers:
            - name: tensorflow-benchmark
              image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
              command:
              - bash
              - run.sh
              - --num_batches=5000000
              - --batch_size=8
              resources:
                limits:
                  aliyun.com/gpu-mem: 10 # Requests 10 GiB of GPU memory.
                  aliyun.com/gpu-core.percentage: 30  # Requests 30% of the computing power of one card.
              workingDir: /root
            restartPolicy: Never
  2. Implante os Jobs:

    kubectl apply -f tensorflow-benchmark-exclusive.yaml
    kubectl apply -f tensorflow-benchmark-share-mem.yaml
    kubectl apply -f tensorflow-benchmark-share-mem-core.yaml
  3. Verifique o status dos Pods:

    kubectl get pod

    Saída esperada:

    NAME                                        READY   STATUS    RESTARTS   AGE
    tensorflow-benchmark-exclusive-7dff2        1/1     Running   0          3m13s
    tensorflow-benchmark-share-mem-core-k24gz   1/1     Running   0          4m22s
    tensorflow-benchmark-share-mem-shmpj        1/1     Running   0          3m46s

    Todos os Pods estão no estado Running, confirmando que a implantação foi bem-sucedida.

Etapa 3: Visualizar o painel de GPU

GPUs - cluster dimension

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Operations > Prometheus Monitoring.

  3. Na página Prometheus Monitoring, clique na aba GPU Monitoring e, em seguida, na aba GPUs - Cluster Dimension. O painel exibe as informações descritas a seguir. Consulte Cluster dimension monitoring dashboard.

    image

    Painel

    Descrição

    Total GPU Nodes

    3 nós com GPU.

    Allocated GPUs

    1,9 de 3 GPUs alocadas.

    Nota

    Para solicitações de placa inteira, a proporção de alocação por placa é 1. No agendamento compartilhado de GPU, a proporção equivale à memória de GPU alocada dividida pela memória total da placa.

    Allocated GPU Memory

    63,0% da memória de GPU alocada.

    Used GPU Memory

    35,5% da memória de GPU utilizada.

    Average GPU Utilization

    Utilização média: 74%.

    GPU Memory Copy Utilization

    Utilização média de cópia de memória: 43,7%.

    GPU Node Details

    Detalhes dos nós com GPU, incluindo nome do nó, índice da placa, utilização e utilização do controlador de memória.

GPUs - nodes

Na página Prometheus Monitoring, clique na aba GPU Monitoring e, em seguida, na aba GPUs - Nodes. Na lista suspensa GPUNode, selecione um nó. Este exemplo utiliza cn-hangzhou.10.166.154.xxx. O painel exibe:

image

image

image

O painel GPU Process Details também inclui colunas para Container Name, Allocate Mode, Process Id, Process Name, Process Type, GPU Index, Used GPU Memory, SM Utilization, GPU Memory Copy Util, Decode Utilization e Encode Utilization.

Grupo de painéis

Painel

Descrição

Overview

GPU Mode

Modo compartilhado: recursos de GPU solicitados por memória e poder de computação.

NVIDIA Driver Version

Versão do driver da GPU: 535.161.07.

Allocated GPUs

0,45 de 1 GPU alocada.

GPU Utilization

Utilização média da GPU: 26%.

Allocated GPU Memory

45,5% da memória de GPU alocada.

Used GPU Memory

36,4% da memória de GPU utilizada.

Allocated Computing Power

30% do poder de computação da placa GPU 0 alocado.

Nota

Este painel exibe dados somente quando a alocação de poder de computação está ativada. Neste exemplo, apenas o nó com o rótulo ack.node.gpu.schedule=core_mem apresenta dados.

Utilization

GPU Utilization

Utilização da placa GPU 0: mín. 0%, máx. 33%, méd. 12%.

Memory Copy Utilization

Utilização de cópia de memória da placa GPU 0: mín. 0%, máx. 22%, méd. 8%.

Memory&BAR1

GPU Memory Details

Detalhes da placa GPU: UUID, índice e modelo.

BAR1 Used

Memória BAR1 utilizada: 4 MB.

Memory Used

Memória de GPU utilizada: 8,17 GB.

BAR1 Total

Memória BAR1 total: 32,8 GB.

GPU Process

GPU Process Details

Detalhes do processo da GPU: namespace do Pod, nome e informações do processo.

Métricas avançadas estão disponíveis na parte inferior da página. Consulte GPUs - Nodes.

Os seis grupos de painéis são GPU Process (2 painéis), Profiling (12 painéis), Temperature & Energy (4 painéis), Clock (6 painéis), Retired Pages (2 painéis) e Violation (6 painéis). Eles ficam recolhidos por padrão; clique em para expandi-los.

GPUs - application pod dimension

Na página Prometheus Monitoring, clique na aba GPU Monitoring e, em seguida, na aba GPUs - Pods. Esta tabela lista as métricas de GPU por Pod. Além dos campos abaixo, as colunas incluem Pod Source, Allocated Mode (exclusivo ou compartilhado), SM Utilization, GPU Memory Copy Utilization, Decode Utilization e Encode Utilization.

Painel

Descrição

GPU Pod Details

Detalhes do Pod: namespace, nome, nó e memória de GPU utilizada.

Nota
  • Com o compartilhamento de GPU, os nós relatam a memória total de GPU por placa como um número inteiro arredondado para baixo. Por exemplo, uma placa com 31,7 GiB relata 31 GiB. Se um Pod solicitar 10 GiB, a alocação real será 31,7 × (10 / 31) = 10,2 GiB.

  • Exibe o poder de computação alocado para um Pod. Mostra "-" se não houver solicitação. Por exemplo, o tensorflow-benchmark-share-mem-core-k24gz tem 30% do poder de computação alocado.

Métricas avançadas estão disponíveis na parte inferior da página. Consulte GPUs - Application Pod Dimension.

Os grupos de painéis incluem: Pod Metrics (GPU Device) (6 painéis), Pods Metrics (Host Resource) (8 painéis), GPU Utilization (Associated with Pod) (4 painéis), GPU Memory & BAR1 (Associated with Pod) (5 painéis), GPU Profiling (Associated with Pod) (12 painéis), GPU Temperature & Energy (Associated with Pod) (4 painéis) e GPU Clock (Associated with Pod) (6 painéis).