O monitoramento de GPU, baseado no NVIDIA Data Center GPU Manager (DCGM), oferece visibilidade sobre a utilização da GPU, a integridade e o desempenho das cargas de trabalho em todo o cluster. Use as métricas de GPU para diagnosticar problemas, otimizar a alocação de recursos e subsidiar o planejamento de capacidade.
Como funciona
O DCGM é a ferramenta da NVIDIA para gerenciar GPUs em clusters de grande escala. Um sistema de monitoramento baseado no DCGM fornece:
Monitoramento do comportamento da GPU
Gerenciamento da configuração da GPU
Gerenciamento de políticas da GPU
Diagnóstico de integridade da GPU
Estatísticas no nível da GPU e da thread
Configuração e monitoramento do NVSwitch
Pré-requisitos
Antes de começar, verifique se você tem:
Limitações
O driver NVIDIA em cada nó deve ser da versão 418.87.01 ou posterior. Acesse um nó de GPU e execute
nvidia-smipara verificar a versão do driver.As Profiling Metrics exigem o driver NVIDIA versão 450.80.02 ou posterior. Para mais detalhes, consulte Feature Overview.
Não há suporte para monitoramento de NVIDIA Multi-Instance GPU (MIG).
Faturamento
As métricas de monitoramento de GPU são coletadas por meio do Alibaba Cloud Managed Service for Prometheus. Para detalhes de preços, consulte Visão geral do faturamento.
Etapa 1: Ativar o monitoramento do Prometheus
O componente ack-arms-prometheus deve estar na versão 1.1.7 ou posterior. Verifique a versão do componente e atualize-o se necessário.
Opção A: Ativar o monitoramento para um cluster existente
(Opcional) Para um cluster dedicado ACK, conceda primeiro a autorização para políticas de monitoramento ao cluster.
Na página Clusters, clique em no nome do cluster desejado. No painel de navegação à esquerda, escolha Operations > Prometheus Monitoring.
Na página Prometheus Monitoring, selecione uma versão de monitoramento de contêiner e clique em Install.
Após ativar o monitoramento, as métricas básicas padrão são coletadas automaticamente. Para coletar métricas personalizadas, consulte Coletar métricas personalizadas. Vários painéis predefinidos também estão disponíveis nesta página, incluindo Cluster Overview, Node Monitoring, Application Monitoring, Network Monitoring e Storage Monitoring.
Opção B: Ativar o monitoramento durante a criação do cluster
ACK managed cluster Pro Edition:
Na página Component Configuration, na seção Container Monitoring, selecione Container Cluster Monitoring Pro Edition ou Container Cluster Monitoring Basic Edition. Para mais detalhes, consulte Criar um cluster gerenciado ACK.
Nota: O Auto Mode para hospedagem inteligente ativa o Container Monitoring Basic Edition por padrão.
ACK managed cluster Basic Edition, clusters ACS e clusters ACK Serverless:
Na página Component Configurations do assistente de criação de cluster, na seção Monitor containers, selecione Enable Managed Service for Prometheus para instalar o Container Monitoring Basic Edition.
Após ativar o monitoramento, as métricas básicas padrão são coletadas automaticamente. Para coletar métricas personalizadas, consulte Coletar métricas personalizadas. Na página de detalhes do cluster, escolha Operations > Prometheus Monitoring para visualizar painéis predefinidos como Cluster Overview, Node Monitoring, Application Monitoring, Network Monitoring e Storage Monitoring.
Para obter mais informações sobre como ativar o monitoramento do Prometheus, consulte Ativar o monitoramento do Prometheus para ACK.
Se você utiliza um serviço Prometheus open source autogerenciado e precisa de monitoramento de GPU, instale o componente ack-gpu-exporter.
Etapa 2: Verificar os componentes de monitoramento de GPU
Depois de ativar o monitoramento do Prometheus, verifique se os pods do exportador de GPU estão em execução:
kubectl get pods -n arms-prom -l k8s-app=ack-prometheus-gpu-exporter
Cada nó de GPU no cluster deve ter um pod ack-prometheus-gpu-exporter em execução. Esse DaemonSet coleta métricas do DCGM dos seus nós de GPU.
Etapa 3: Implantar uma aplicação de exemplo
Para gerar métricas de GPU, implante uma carga de trabalho de exemplo em um nó de GPU.
-
Crie um arquivo chamado
tensorflow-benchmark.yamlcom o seguinte conteúdo:apiVersion: batch/v1 kind: Job metadata: name: tensorflow-benchmark spec: parallelism: 1 template: metadata: labels: app: tensorflow-benchmark 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=50000 - --batch_size=8 resources: limits: nvidia.com/gpu: 1 # Request one GPU. workingDir: /root restartPolicy: Never -
Implante a aplicação:
kubectl apply -f tensorflow-benchmark.yaml -
Verifique o status do pod:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE tensorflow-benchmark-k*** 1/1 Running 0 114s
Etapa 4: Visualizar dados de monitoramento de GPU
Acesse o console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em no nome do cluster desejado. No painel de navegação à esquerda, escolha Operations > Prometheus Monitoring.
-
Clique em na aba GPU Monitoring e, em seguida, na aba GPUs-Pods. Os dados de monitoramento mostram em qual nó cada pod de GPU está em execução (por exemplo,
cn-beijing.10.131.xx.xxx).
-
Clique em na aba GPUs-Nodes e defina GPUNode para um nó específico (por exemplo,
cn-beijing.10.131.xx.xxx) para visualizar informações detalhadas da GPU desse nó. Para descrições dos parâmetros, consulte Descrição do painel.
Perguntas frequentes
Vazamento de memória do DCGM
O DaemonSet ack-prometheus-gpu-exporter inicia automaticamente quando você instala o Managed Service for Prometheus. Ocasionalmente, o DCGM não libera a memória corretamente durante a execução, o que faz com que o uso de memória aumente ao longo do tempo.
Uma configuração resources.limits está definida no pod do exportador para mitigar esse problema. Quando o limite de memória é atingido, o pod reinicia automaticamente. Isso geralmente ocorre cerca de uma vez por mês. Após a reinicialização, as métricas voltam a ser relatadas normalmente. O Grafana pode apresentar anomalias por alguns minutos (como um pico repentino na contagem de nós), mas a exibição se corrige sozinha.
Para mais informações, consulte The DCGM has a memory leak? no GitHub.
O ack-prometheus-gpu-exporter é encerrado por falta de memória
O ack-prometheus-gpu-exporter usa o DCGM no modo incorporado, o que consome uma grande quantidade de memória em nós com múltiplas GPUs e é propenso a vazamentos de memória. Se você executar vários processos de GPU em uma instância com múltiplas GPUs e alocar pouca memória para o exportador, o pod poderá ser encerrado por um evento de falta de memória (OOM).
Normalmente, o pod volta a relatar métricas após a reinicialização. Se os encerramentos por falta de memória forem frequentes, aumente os limits de memória do DaemonSet ack-prometheus-gpu-exporter no namespace arms-prom.
O ack-prometheus-gpu-exporter relata um erro
Se os logs do pod contiverem um erro semelhante ao seguinte:
failed to get all process informations of gpu nvidia1,reason: failed to get gpu utilizations for all processes on device 1,reason: Not Found
Esse erro ocorre porque versões mais antigas do ack-prometheus-gpu-exporter não conseguem recuperar métricas de GPU quando não há tarefas em execução em determinadas placas de GPU.
Atualize o componente ack-arms-prometheus para a versão mais recente para resolver esse problema.