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
Central de ajuda/ GaussDB(DWS)/ Perguntas frequentes/ Desempenho do banco de dados/ Gerenciamento de recursos da CPU do GaussDB(DWS)

Gerenciamento de recursos da CPU do GaussDB(DWS)

Atualizado em 2024-05-09 GMT+08:00

Visão geral do gerenciamento de recursos da CPU

Em diferentes cenários de serviço, os recursos do sistema (CPU, memória, I/O e recursos de armazenamento) do banco de dados são alocados adequadamente às consultas para garantir o desempenho da consulta e a estabilidade do serviço.

GaussDB(DWS) fornece a função de gerenciamento de recursos. Você pode colocar recursos em diferentes pools de recursos, que são isolados uns dos outros. Em seguida, você pode associar usuários de banco de dados a esses pools de recursos. Quando um usuário inicia uma consulta SQL, a consulta será transferida para o pool de recursos associado ao usuário. Você pode especificar o número de consultas que podem ser executadas simultaneamente em um pool de recursos, o limite superior de memória usado para uma única consulta e os recursos de memória e CPU que podem ser usados por um pool de recursos. Desta forma, você pode limitar e isolar os recursos ocupados por diferentes cargas de trabalho.

O GaussDB(DWS) usa cgroups para gerenciar e controlar os recursos da CPU, envolvendo os subsistemas da CPU, cpuacct e cpuset. O compartilhamento de CPU é implementado com base no subsistema da CPU cpu.shares. As vantagens do compartilhamento de CPU são as seguintes: O controle da CPU não é acionado quando a CPU do sistema operacional não está totalmente ocupada. O limite de CPU é implementado com base no cpuset, que é um subsistema de CPU usado para monitorar o uso de recursos da CPU.

Ao adicionar um pool de recursos no console de gerenciamento do GaussDB(DWS), você deve escolher entre Share e Limit.

Compartilhamento de CPU

CPU Share: percentual de tempo de CPU que pode ser usado por usuários associados ao pool de recursos atual para executar trabalhos.

O compartilhamento tem dois significados:

  • Share: a CPU é compartilhada por todos os Cgroups, e outros Cgroups podem usar recursos de CPU ociosos.
  • Limit: quando a CPU está totalmente carregada durante as horas de pico, os Cgroups antecipam os recursos da CPU com base em seus limites.

O compartilhamento de CPU é implementado com base em cpu.shares e entra em vigor apenas quando a CPU está totalmente carregada. Quando a CPU está ociosa, não há garantia de que um Cgroup irá antecipar os recursos da CPU apropriados à sua cota. Ainda pode haver contenção de recursos quando a CPU está ociosa. Tarefas em um Cgroup podem usar recursos da CPU sem restrições. Embora o uso médio da CPU não seja alto, a contenção de recursos da CPU ainda pode ocorrer em um momento específico.

Por exemplo, 10 trabalhos estão sendo executados em 10 CPUs e um trabalho está sendo executado em cada CPU. Nesse caso, qualquer solicitação de trabalho para recursos da CPU será respondida instantaneamente e não há disputa. Se 20 trabalhos estiverem sendo executados em 10 CPUs, o uso da CPU ainda pode não ser alto porque os trabalhos nem sempre ocupam a CPU e podem esperar por recursos de I/O e de rede. Os recursos da CPU parecem ociosos. No entanto, se 2 ou mais trabalhos solicitarem uma CPU ao mesmo tempo, ocorrerá a contenção de recursos da CPU, afetando o desempenho do trabalho.

Limite de CPU

CPU Limit: especifica a porcentagem do número máximo de núcleos de CPU que podem ser usados por um usuário do banco de dados no pool de recursos.

O limite tem dois significados:
  • Dedicated: a CPU é dedicada a um Cgroup. Outros Cgroups não podem usar recursos de CPU ociosos.
  • Quota: somente os recursos da CPU na cota alocada podem ser usados. Os recursos de CPU ociosos de outros Cgroups não podem ser preempcionados.

O limite de CPU é implementado com base em cpuset.cpu. Você pode definir uma cota adequada para implementar o isolamento absoluto dos recursos da CPU entre Cgroups. Desta forma, as tarefas de diferentes Cgroups não afetarão umas às outras. No entanto, o isolamento absoluto da CPU fará com que os recursos da CPU ociosa em um Cgroup sejam desperdiçados. Portanto, o limite não pode ser muito grande. Um limite maior pode não trazer um melhor desempenho.

Por exemplo, em um caso, 10 trabalhos estão sendo executados em 10 CPUs e o uso médio da CPU é de cerca de 5%. Em outro caso, 10 trabalhos estão sendo executados em 5 CPUs e o uso médio da CPU é de cerca de 10%. De acordo com a análise anterior, embora o uso da CPU seja baixo quando 10 trabalhos são executados em cinco CPUs. No entanto, a contenção de recursos da CPU ainda existe. Portanto, o desempenho da execução de 10 trabalhos em 10 CPUs é melhor do que o da execução de 10 trabalhos em 5 CPUs. No entanto, não é quanto mais CPUs, melhor. Se dez trabalho forem executados em 20 CPUs, em qualquer ponto de tempo, pelo menos 10 CPUs ficarão ociosas. Portanto, teoricamente, executar 10 trabalhos em 20 CPUs não tem melhor desempenho do que executar 10 CPUs. Para um grupo C com uma simultaneidade de N, se o número de CPUs alocadas for menor que N, o desempenho do trabalho será melhor com mais CPUs. No entanto, se o número de CPUs alocadas for maior que N, o desempenho do trabalho não será melhorado com mais CPUs.

Cenários de aplicações do gerenciamento de recursos da CPU

O limite de CPU e o compartilhamento de CPU têm suas próprias vantagens e desvantagens. O compartilhamento de CPU pode utilizar totalmente os recursos da CPU. No entanto, os recursos de diferentes Cgroups não são completamente isolados, o que pode afetar o desempenho da consulta. O limite da CPU pode implementar o isolamento absoluto dos recursos da CPU. No entanto, os recursos de CPU ociosos serão desperdiçados. Em comparação com o limite de CPU, o compartilhamento de CPU tem maior uso de CPU e taxa de transferência geral de trabalhos. Comparado com o compartilhamento de CPU, o limite de CPU tem isolamento completo da CPU, o que pode atender melhor aos requisitos dos usuários sensíveis ao desempenho.

Se a disputa da CPU ocorrer quando vários tipos de trabalhos estiverem em execução no sistema de banco de dados, você poderá selecionar diferentes modos de controle de recursos da CPU com base em diferentes cenários.

  • Cenário 1: utilize totalmente os recursos da CPU. Concentre-se na taxa de transferência geral da CPU em vez do desempenho de um único tipo de trabalho.

    Sugestão: não é aconselhável isolar CPUs entre usuários. Não importa qual tipo de controle da CPU seja implementado, o uso geral da CPU é afetado.

  • Cenário 2: um certo grau de contenção de recursos da CPU e perda de desempenho são permitidos. Quando a CPU está ociosa, os recursos da CPU são totalmente utilizados. Quando a CPU está totalmente carregada, cada tipo de serviço precisa usar a CPU proporcionalmente.

    Sugestão: você pode usar o compartilhamento de CPU para melhorar o uso geral da CPU enquanto implementa o isolamento e o controle da CPU quando as CPUs estão totalmente carregadas.

  • Cenário 3: alguns trabalhos são sensíveis ao desempenho e o desperdício de recursos da CPU é permitido.

    Sugestão: você pode usar o limite de CPU para implementar o isolamento absoluto de CPU entre diferentes tipos de trabalhos.

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