Quando os parâmetros padrão do SO Linux não atendem aos requisitos da sua carga de trabalho, personalize os parâmetros de SO dos nós no nível do pool de nós para ajustar o desempenho do sistema. O sistema altera as configurações dos nós em lotes: as alterações entram em vigor imediatamente nos nós existentes e os novos nós adicionados usam a nova configuração.
Notas de uso
Este recurso é suportado apenas pela versão 1.28 ou posterior dos clusters gerenciados pelo ACK, clusters dedicados do ACK (não disponíveis para novas criações) e clusters ACK Edge. Para atualizar um cluster, consulte Atualizar manualmente um cluster.
Observações
A modificação dinâmica da configuração de SO de um nó pode alterar a configuração dos Pods existentes nesse nó e acionar a recriação dos Pods. Antes de usar este recurso, certifique-se de que sua aplicação ofereça alta disponibilidade (HA).
Ajustes inadequados nos parâmetros de SO alteram o funcionamento do kernel Linux. Isso pode degradar o desempenho do nó ou torná-lo indisponível, afetando consequentemente suas cargas de trabalho. Compreenda totalmente a finalidade de cada parâmetro antes de modificá-lo e teste a alteração exaustivamente antes de aplicá-la em um ambiente de produção.
Não exclua itens de configuração do sysctl. Se você excluir um item de configuração diretamente, a configuração permanecerá nos nós existentes.
Configurar parâmetros de SO do pool de nós
É possível configurar parâmetros Sysctl e Transparent Huge Pages (THP) para um pool de nós. Todos esses parâmetros podem ser configurados mediante a modificação de arquivos de configuração. Os parâmetros THP e alguns parâmetros sysctl também podem ser configurados no console ou via OpenAPI.
Configurar pelo console ou OpenAPI
Console
A aplicação de parâmetros de SO personalizados altera a configuração de parâmetros de SO dos nós existentes e pode afetar suas cargas de trabalho. Execute esta operação fora do horário de pico.
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 coluna Actions da lista de pools de nós, clique em
> OS Configuration para o pool de nós desejado.-
Leia atentamente as observações na página atual. Clique em + Custom Parameters e selecione os parâmetros que deseja configurar. Especifique os nós a serem configurados e defina o Maximum Number of Nodes to Repair per Batch com um valor de até 10. Em seguida, clique em Submit e siga as instruções na tela para concluir a operação.
Após configurar o Maximum Number of Nodes to Repair per Batch, a configuração de SO entra em vigor nos nós em lotes. Durante a execução, a área Event History mostra o progresso e permite pausar, retomar ou cancelar o trabalho. Use o recurso de pausa para validar os nós que já foram configurados. Quando um trabalho é pausado, os nós que estão sendo configurados continuam até a conclusão. Os nós que ainda não iniciaram não recebem a configuração personalizada até que o trabalho seja retomado.
ImportanteConclua o trabalho de configuração personalizada o mais rápido possível. Um trabalho pausado é cancelado automaticamente após sete dias, e as informações associadas de eventos e logs também são limpas.
OpenAPI
Além do console, os parâmetros de SO podem ser personalizados usando a operação ModifyNodePoolNodeConfig.
Configurar usando um arquivo de configuração
O ACK permite gravar parâmetros personalizados em /etc/sysctl.d/99-user-customized.conf. Este arquivo é reservado para configurações personalizadas durante a inicialização e reinicialização do nó. Os parâmetros sysctl gravados neste arquivo têm prioridade quando o nó é reiniciado. Eles substituem os valores padrão do SO e os valores de parâmetros gravados pelo recurso de configuração sysctl personalizada do pool de nós.
Além das precauções na seção Observações, o ajuste de parâmetros sysctl altera o funcionamento do kernel Linux e pode degradar o desempenho do nó ou tornar os nós indisponíveis, o que afeta a operação normal da carga de trabalho. Avalie completamente os riscos de uma alteração e teste-a em um ambiente fora de produção antes de aplicá-la em um ambiente de produção.
Nós existentes
Para nós existentes em um pool de nós, faça login em um nó e modifique o arquivo de configuração de parâmetros personalizados. Em seguida, execute manualmente o comando sysctl -p /etc/sysctl.d/99-user-customized.conf para aplicar a configuração.
Exemplo de arquivo de configuração (/etc/sysctl.d/99-user-customized.conf):
# Filesystem settings
fs.file-max = 2097152
fs.nr_open = 1048576
# Networking settings
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8096
# Memory / kernel settings
vm.max_map_count = 262144
Substitua os nomes e valores dos parâmetros pelos necessários para sua carga de trabalho.
Novos nós (scale-out)
Para nós que o pool de nós adiciona durante o scale-out, adicione o script que grava o arquivo de configuração de parâmetros personalizados aos Dados Personalizados Predefinidos do pool de nós. Os novos nós usarão esses valores de parâmetros personalizados por padrão. Configure isso da seguinte maneira.
Nos Pre-defined Custom Data da configuração do pool de nós, configure echo '${sysctl_key}=${sysctl_value}' > /etc/sysctl.d/99-user-customized.conf. Substitua ${sysctl_key} e ${sysctl_value} pelos valores reais para gravar a configuração personalizada em um arquivo de configuração no diretório /etc/sysctl.d/.
Para mais informações, consulte Criar e gerenciar pools de nós .

Verificar se as alterações entraram em vigor
Após aplicar parâmetros de SO personalizados, verifique se as alterações entraram em vigor nos seus nós.
Faça login em um nó no pool de nós. Para mais informações, consulte Escolher um método de conexão.
-
Execute o comando
sysctlpara verificar o valor atual de um parâmetro. Por exemplo:sysctl fs.file-maxSaída esperada:
fs.file-max = 2097152 -
Para parâmetros THP, leia o arquivo sysfs correspondente. Por exemplo:
cat /sys/kernel/mm/transparent_hugepage/enabled No console ACK, verifique a seção Event History do pool de nós para conferir o status da tarefa de configuração.
Lista de parâmetros sysctl
O Default value nas tabelas a seguir é o valor que o ACK define por padrão ao inicializar um pool de nós.
Para os intervalos válidos dos parâmetros a seguir, consulte a documentação sobre parâmetros sysctl do kernel Linux.
Para parâmetros que ainda não são suportados no console ou via OpenAPI, e para parâmetros não listados nas tabelas, consulte Configurar usando um arquivo de configuração para modificá-los.
Parâmetros de sistema de arquivos
Estes parâmetros controlam limites de manipuladores de arquivos, watches inotify e comportamento do sistema de arquivos. Ajuste essas configurações para cargas de trabalho intensivas em I/O ou aplicações que abrem um grande número de arquivos.
|
Nome do campo |
Descrição |
Valor padrão |
Suportado no console ou via OpenAPI |
|
fs.aio-max-nr |
Número máximo de operações de I/O assíncronas. |
65536 |
|
|
fs.file-max |
Número máximo de manipuladores de arquivos que o sistema pode abrir. |
2097152 |
|
|
fs.inotify.max_user_watches |
Número máximo de watches inotify que um único usuário pode criar. |
524288 |
|
|
fs.nr_open |
Número máximo de descritores de arquivos que cada processo pode abrir. Este valor deve ser menor que o valor de fs.file-max. |
1048576 |
|
|
fs.inotify.max_user_instances |
Limita o número de instâncias inotify que um único usuário pode criar para evitar esgotamento de recursos. |
16384 |
|
|
fs.inotify.max_queued_events |
Define o número de eventos do sistema de arquivos (FS) que podem ser armazenados em buffer na fila do kernel. |
16384 |
|
|
fs.may_detach_mounts |
Permite que o kernel desanexe com segurança um ponto de montagem de um namespace enquanto processos ainda o acessam, evitando que todo o namespace seja bloqueado. |
1 |
|
Parâmetros de rede
Esses parâmetros regem buffers de socket, filas de conexão, memória TCP e comportamento do cache ARP. Ajuste essas configurações para cargas de trabalho com alto tráfego ou alta concorrência.
|
Nome do campo |
Descrição |
Valor padrão |
Suportado no console ou via OpenAPI |
|
net.core.netdev_max_backlog |
Número máximo de pacotes de dados que podem ser enfileirados em INPUT quando uma interface recebe pacotes de dados mais rápido do que o kernel consegue processá-los. |
16384 |
|
|
net.core.optmem_max |
Tamanho máximo do buffer auxiliar permitido para cada socket de rede, em bytes. |
20480 |
|
|
net.core.rmem_max |
Tamanho máximo do buffer de recepção para cada socket de rede, em bytes. |
16777216 |
|
|
net.core.wmem_max |
Tamanho máximo do buffer de envio para cada socket de rede, em bytes. |
16777216 |
|
|
net.core.wmem_default |
Tamanho padrão do buffer de envio para cada socket de rede, em bytes. |
212992 |
|
|
net.ipv4.tcp_mem |
Quantidade de memória disponível para a pilha TCP, medida em páginas de memória, que normalmente têm 4 KB. Este parâmetro consiste em três valores inteiros que representam os níveis baixo, pressão e alto, e os valores devem ser definidos nesta ordem exata. |
Calculado dinamicamente com base na memória total do sistema |
|
|
net.ipv4.neigh.default.gc_thresh1 |
Número mínimo de entradas retidas no cache ARP. O sistema não realiza coleta de lixo quando o número de entradas em cache está abaixo deste valor. |
Pré-definido pelo sistema |
|
|
net.ipv4.neigh.default.gc_thresh2 |
Limite flexível para o número de entradas no cache ARP. Quando o número de entradas em cache atinge este valor, o sistema considera a coleta de lixo, mas não a impõe imediatamente, aguardando um atraso de 5 segundos. |
1024 |
|
|
net.ipv4.neigh.default.gc_thresh3 |
Limite rígido para o número de entradas retidas no cache ARP. Quando o número de entradas em cache atinge este valor, o sistema executa imediatamente a coleta de lixo. Se o número continuar excedendo esse valor, o sistema continua limpando entradas. |
8192 |
|
|
net.core.somaxconn |
Define o número máximo de conexões na fila de escuta do socket para controlar a capacidade de conexões simultâneas. |
32768 |
|
|
net.ipv4.tcp_wmem |
Configura os tamanhos mínimo, padrão e máximo do buffer de envio TCP. Unidade: bytes. Esta configuração afeta diretamente o throughput de rede e o consumo de memória das conexões TCP. |
4096 12582912 16777216 |
|
|
net.ipv4.tcp_rmem |
Configura os tamanhos mínimo, padrão e máximo do buffer de recepção TCP. Unidade: bytes. Esta configuração afeta diretamente o throughput de rede e o consumo de memória das conexões TCP. |
4096 12582912 16777216 |
|
|
net.ipv4.tcp_max_syn_backlog |
Limita o número de solicitações de conexão na fila SYN que não concluíram o handshake de três vias. |
8096 |
|
|
net.ipv4.tcp_slow_start_after_idle |
Controla se uma conexão TCP reutiliza o algoritmo de início lento após ficar ociosa por muito tempo. |
0 |
|
|
net.ipv4.ip_forward |
Habilita o encaminhamento de pacotes IPv4, permitindo que o sistema atue como roteador e encaminhe pacotes. |
1 |
|
|
net.bridge.bridge-nf-call-iptables |
Permite que dispositivos bridge apliquem regras iptables da Camada 3 ao encaminhar na Camada 2, garantindo que as políticas de segurança de rede entrem em vigor. |
1 |
|
Parâmetros de memória e kernel
Tais parâmetros controlam limites de processos, contagens de threads, mapeamento de memória e diagnósticos do kernel. Ajuste essas configurações quando suas cargas de trabalho exigirem um grande número de processos ou threads, ou quando for necessário ajustar o comportamento do kernel para garantir estabilidade.
|
Nome do campo |
Descrição |
Valor padrão |
Suportado no console ou via OpenAPI |
|
kernel.pid_max |
Número máximo de PIDs que o sistema pode alocar. |
4194303 |
|
|
kernel.threads-max |
Quantidade máxima de threads que o sistema pode criar. |
504581 |
|
|
user.max_user_namespaces |
Limite de namespaces de usuário que um único usuário pode criar. |
0 |
|
|
kernel.softlockup_panic |
Ao definir este parâmetro como 1, se ocorrer um soft lockup, o kernel aciona um pânico e reinicia o sistema para restaurar rapidamente seu estado. |
1 |
|
|
kernel.softlockup_all_cpu_backtrace |
Com este parâmetro definido como 1, o sistema captura informações de depuração de todas as CPUs caso detecte um soft lockup, auxiliando no diagnóstico de problemas. |
1 |
|
|
vm.max_map_count |
Restringe o número de regiões de mapeamento de memória que um único processo pode ter, prevenindo uso excessivo de memória. |
262144 |
|
Lista de parâmetros THP
Transparent Huge Pages (THP) é um recurso geral do kernel Linux que combina automaticamente páginas pequenas, tipicamente de 4 KB, em páginas grandes, geralmente de 2 MB ou mais. Isso reduz o tamanho das Entradas da Tabela de Páginas (PTEs) usadas para acesso à memória e diminui o número de acessos à memória. Também alivia a pressão sobre o Translation Lookaside Buffer (TLB) e melhora a eficiência do acesso à memória.
Todos os parâmetros a seguir podem ser configurados no console ou via OpenAPI.
Os valores padrão dos parâmetros a seguir variam conforme o sistema operacional e a versão do kernel. Para mais informações, consulte a documentação sobre parâmetros THP do kernel Linux.
|
Nome do campo |
Descrição |
Valores possíveis |
|
transparent_enabled |
Controla se o THP está habilitado em todo o sistema. |
|
|
transparent_defrag |
Controla se a desfragmentação THP deve ser habilitada. Quando ativada, páginas pequenas na memória podem ser combinadas em uma página grande, o que reduz o tamanho da tabela de páginas e melhora o desempenho do sistema. |
|
|
khugepaged_defrag |
Como essa operação realiza bloqueios no caminho de memória, e o daemon |
|
|
khugepaged_alloc_sleep_millisecs |
Quando uma alocação THP falha, o daemon |
Consulte desfragmentação khugepaged. |
|
khugepaged_scan_sleep_millisecs |
Intervalo em que o daemon |
|
|
khugepaged_pages_to_scan |
Número de páginas de memória que o daemon |