Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gerenciamento e governança
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migração
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Situation Awareness
Managed Threat Detection
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicações de negócios
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive
Nesta página

Mostrar todos

Intermitência de CPU

Atualizado em 2024-11-28 GMT+08:00

Se um limite de CPU for definido para um contêiner no pod, o uso da CPU do contêiner não poderá exceder o limite. A limitação frequente do tráfego de CPU afeta o desempenho do serviço e aumenta a latência da resposta de cauda longa, especialmente para serviços sensíveis à latência.

A intermitência da CPU é um mecanismo de limitação de tráfego elástico que permite exceder temporariamente o limite da CPU para reduzir o tempo de resposta de cauda longa dos serviços. Quando a cota de CPU para um serviço em cada período de agendamento de CPU permanece, o sistema acumula a cota de CPU. Se o limite de CPU precisar ser excedido em períodos de agendamento subsequentes, a cota de CPU acumulada poderá ser usada.

  • Se a intermitência de CPU não estiver ativada, a cota de CPU de um contêiner não poderá exceder o limite e os recursos de intermitência acumulados não poderão ser usados.
    Figura 1 Intermitência da CPU não ativada
  • Depois que a intermitência de CPU é ativada, a cota de CPU de um contêiner pode exceder o limite para usar os recursos de intermitência acumulados.
    Figura 2 Intermitência da CPU ativada

Restrições

  • Versão do cluster: cluster do CCE Turbo v1.23.5-r0 ou posterior
  • Versão de SO: Huawei Cloud EulerOS 2.0
  • O complemento volcano de 1.9.0 ou posterior deve ser instalado no cluster e a função de implementação híbrida deve estar habilitada (isto é, colocation_enable nas configurações avançadas deve ser definido como true).

Procedimento

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. No painel de navegação à esquerda, escolha Nodes. Clique na guia Node Pools. Ao criar ou atualizar um pool de nós, ative a implementação híbrida de serviços on-line e offline em Advanced Settings.

    • volcano.sh/oversubscription=true
    • volcano.sh/colocation=true
    Figura 3 Configurações de rótulo do nó

  3. No painel de navegação à esquerda, escolha Add-ons. Clique em Install sob volcano. Na área Advanced Settings, defina colocation_enable como true para permitir a implementação híbrida de serviços on-line e off-line. Para obter detalhes sobre a instalação, consulte Volcano scheduler.

    Se o complemento vulcão tiver sido instalado, clique em Edit para exibir ou modificar o parâmetro colocation_enable.

    Figura 4 Ativar a implementação híbrida de serviços on-line e off-line

  4. Ativar intermitência da CPU.

    Depois de confirmar que o complemento volcano está funcionando, execute o seguinte comando para editar o parâmetro configmap de volcano-agent-configuration no namespace de kube-system. Se a opção enable estiver definida como true, a intermitência da CPU será ativada. Se enable for definido como false, a intermitência da CPU será desativada.
    kubectl edit configmap -nkube-system volcano-agent-configuration

    Exemplo:

    cpuBurstConfig: 
      enable: true

    Depois que a intermitência da CPU é desativada, essa função ainda é ativada nos pods existentes onde a intermitência da CPU foi ativada. A desativação da intermitência da CPU só tem efeito em novos pods.

  5. Implemente uma carga de trabalho em um pool de nós onde a implementação híbrida foi ativada. Tome Nginx como exemplo. Defina requests para 2 e limits para 4 e crie um Serviço que possa ser acessado no cluster para a carga de trabalho.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations: 
            volcano.sh/enable-quota-burst: "true"
            volcano.sh/quota-burst-time: "200000"
        spec:
          containers:
          - name: container-1
            image: nginx:latest
            resources:
              limits:
                cpu: "4"
              requests:
                cpu: "2"
          imagePullSecrets:
            - name: default-secret
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      namespace: default
      labels:
        app: nginx
    spec:
      selector:
        app: nginx
      ports:
        - name: cce-service-0
          targetPort: 80
          nodePort: 0
          port: 80
          protocol: TCP
      type: ClusterIP

    Anotação

    Obrigatório

    Descrição

    volcano.sh/enable-quota-burst

    Sim

    A intermitência da CPU está ativada para a carga de trabalho.

    volcano.sh/quota-burst-time

    Não

    Para garantir a estabilidade do agendamento da CPU e reduzir a contenção quando vários contêineres enfrentam intermitências de CPU ao mesmo tempo, o valor padrão de CPU Burst é o mesmo que o valor de CPU Quota. Ou seja, um contêiner pode usar no máximo duas vezes o valor do CPU Limit. Por padrão, CPU Burst é definido para todos os contêineres de serviço em um pod.

    Neste exemplo, o CPU Limit do contêiner é 4, ou seja, o valor padrão é 400,000 (1 núcleo = 100.000), indicando que um máximo de quatro núcleos adicionais podem ser usados após o valor de CPU Limit ser atingido.

  6. Verificar intermitência da CPU.

    Você pode usar a ferramenta wrk para aumentar a carga da carga de trabalho e observar a latência do serviço, a limitação de tráfego e o limite de CPU excedendo quando a Intermitência de CPU é ativada e desativada, respectivamente.

    1. Execute o seguinte comando para aumentar a carga do pod. <service_ip> indica o endereço IP de serviço associado ao pod.
      # Download and install the wrk tool on the node.
      # The Gzip compression module is enabled in the Apache configuration to simulate the computing logic for the server to process requests.
      # Run the following command to increase the load. Note that you need to change the IP address of the target application.
      wrk -H "Accept-Encoding: deflate, gzip" -t 4 -c 28 -d 120  --latency --timeout 2s http://<service_ip>
    2. Obtenha o ID do pod.
      kubectl get pod -n <namespace> <pod_name> -o jsonpath='{.metadata.uid}'
    3. Você pode executar os seguintes comandos no nó para exibir o status de limitação de tráfego e o limite de CPU excedendo o status. No comando, <pod_id> indica o ID do pod.
      cat /sys/fs/cgroup/cpu/kubepods/burstable/pod<pod_id>/cpu.stat
      Informação semelhante à seguinte é exibida.
      nr_periods 0  # Number of scheduling periods
      nr_throttled 0  # Traffic limiting times
      throttled_time 0  # Traffic limiting duration (ns)
      nr_bursts 0 # CPU Limit exceeding times
      burst_time 0 # Total Limit exceeding duration
      Tabela 1 Resumo do resultado neste exemplo

      Intermitência de CPU

      Latência P99

      nr_throttled

      Tempos de limitação de tráfego

      throttled_time

      Duração do limite de tráfego

      nr_bursts

      Limite de tempos excedentes

      bursts_time

      Limite total que excede a duração

      Não ativada

      2,96 ms

      986

      14,3s

      0

      0

      Ativada

      456 μs

      0

      0

      469

      3,7s

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback