Sobre o gerenciamento automático de memória

Selecione uma versão da documentação:

O AlloyDB Omni usa algoritmos adaptativos para gerenciamento de memória.

É possível decidir o limite máximo do buffer compartilhado ao iniciar o AlloyDB Omni. Se você não definir o limite máximo, o AlloyDB Omni vai definir automaticamente o tamanho do backup do buffer compartilhado como 80% da memória do sistema. O tamanho inicial do buffer compartilhado pode ser diferente do limite superior.

O AlloyDB Omni consiste em um worker de memória inteligente que monitora constantemente o status da memória e ajusta o tamanho do buffer compartilhado para melhorar o desempenho ao armazenar dados em cache.

Memória automática

Por padrão, o parâmetro shared_buffers é definido como 0, que é um valor especial que define o limite superior do tamanho do cache shared buffers como 80% da memória do sistema. O AlloyDB Omni começa com 10% do limite superior de shared_buffers. Se shared_buffers for substituído por um valor personalizado, o AlloyDB Omni vai respeitar o valor como o limite máximo do tamanho de shared_buffers e vai começar com esse tamanho personalizado especificado.

Para especificar um tamanho personalizado, defina shared_buffers como 1GB. O método depende do tipo de implantação:

Para instalações baseadas em Linux (incluindo RPM), é possível definir o parâmetro shared_buffers usando um dos métodos a seguir. Depois de aplicar a mudança, reinicie o serviço.

  • Opção 1: editar o arquivo de configuração

    1. Abra o arquivo postgresql.conf para edição.

    2. Adicione ou modifique a seguinte linha:

      shared_buffers = 1GB
      
    3. Salve o arquivo e reinicie o serviço do AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Substitua MAJOR_VERSION pela versão principal da instalação do AlloyDB Omni, como 18.

  • Opção 2: usar o comando ALTER SYSTEM

    1. Conecte-se à instância do banco de dados usando um cliente SQL.

    2. Execute este comando:

      ALTER SYSTEM SET shared_buffers = '1GB';
      
    3. Reinicie o serviço do AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Substitua MAJOR_VERSION pela versão principal da instalação do AlloyDB Omni, como 18.

Otimizar o desempenho da consulta

O valor padrão do parâmetro shared_buffers funciona para cenários comuns.

No entanto, é possível ajustar o valor para melhorar o desempenho. Se você quiser usar o valor padrão de shared_buffers para deduzir o limite máximo do buffer compartilhado, use o valor de cgroup memory.max para influenciar o cálculo.

Memória do mecanismo colunar

O shared_buffers dinâmico é independente da memória do mecanismo colunar. Quando o mecanismo colunar está ativado, o tamanho dinâmico de shared_buffers pode ser derivado subtraindo a quantidade de memória usada pelo mecanismo colunar de 80% da memória total disponível para o sistema ou cgroup.

Páginas enormes

As páginas enormes melhoram o desempenho do banco de dados. O AlloyDB Omni gerencia páginas enormes explicitamente, se possível. Caso contrário, ele depende do recurso de páginas enormes transparentes (THP, na sigla em inglês) do sistema operacional. Se nenhum tipo de página enorme for compatível, o AlloyDB Omni vai usar a página de 4k e mostrar um aviso nos registros do banco de dados com instruções específicas para configurar páginas enormes.

O aviso será semelhante a este:


HINT:  Please manually execute:
          echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
          sudo sysctl -w vm.nr_overcommit_hugepages="$(/usr/bin/awk '/MemTotal/ { printf "%.0f", $2/1024 }' /proc/meminfo)"

Gerenciamento automático de memória no ambiente de execução

O AlloyDB Omni monitora constantemente a carga do sistema e ajusta o consumo de memória para melhorar o desempenho. Especificamente, você pode observar o seguinte:

Mudança dinâmica do tamanho do shared_buffers
O AlloyDB Omni aumenta o tamanho dinâmico de shared_buffers quando o consumo de memória do sistema é baixo e diminui o tamanho quando o consumo de memória do sistema é alto. A extensão `g_memory` está incluída na distribuição do AlloyDB Omni. Para ativar o recurso e monitorar o tamanho dinâmico de `shared_buffers`, execute os seguintes comandos:
CREATE EXTENSION IF NOT EXISTS g_memory;
SELECT g_dynamic_shared_size();
Encerramento de uma conexão do PostgreSQL quando o sistema está com pouca memória
Quando o AlloyDB Omni detecta que o sistema está com pouca memória, ele tenta excluir as conexões do PostgreSQL que mais consomem memória até que a carga volte a um nível razoável. Quando esse evento acontece, o AlloyDB Omni registra uma entrada semelhante ao exemplo a seguir nos registros do banco de dados:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)