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
Um ACK managed cluster criado.
O GPU monitoring ativado para o cluster.
O GPU sharing component instalado.
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.
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.limitsna 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 runpara executar uma aplicação com GPU.Definir a variável
NVIDIA_VISIBLE_DEVICESna seçãoenvdo Pod para solicitar recursos, como emNVIDIA_VISIBLE_DEVICES=allouNVIDIA_VISIBLE_DEVICES=<GPU ID>.Executar programas com GPU em Pods configurados com
privileged: truenosecurityContext.Executar programas com GPU em Pods sem a definição de
NVIDIA_VISIBLE_DEVICES, onde a imagem do contêiner adota o padrãoNVIDIA_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 |
Solicita 10 GiB de memória de GPU e 30% do poder de computação de uma placa. |
-
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
-
-
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 -
Verifique o status dos Pods:
kubectl get podSaí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 3m46sTodos 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
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
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.

Nº
Painel
Descrição
①
Total GPU Nodes
3 nós com GPU.
②
Allocated GPUs
1,9 de 3 GPUs alocadas.
NotaPara 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:



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 | Nº | 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 | |
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.
Nº | Painel | Descrição |
① | GPU Pod Details | Detalhes do Pod: namespace, nome, nó e memória de GPU utilizada. Nota
|
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).