5.4. Ajuste de Capacidade

Leia esta seção para obter um esboço de memória, kernel e capacidade do sistema de arquivos, os parâmetros relacionados a cada um, e os dilemas para ajustar esses parâmetros.
Para definir esses valores temporariamente durante o ajuste, copie o valor desejado para o arquivo adequado no sistema de arquivos proc. Por exemplo, para definir overcommit_memory temporariamente para 1 , execute:
# echo 1 > /proc/sys/vm/overcommit_memory
Note que o caminho para o parâmetro no sistema de arquivos proc varia dependendo do sistema afetado pela mudança.
Para definir estes valores de forma persistente, você precisará utilizar o comando sysctl. Para maiores detalhes, consule o Deployment Guide, disponível em http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.

Ajustes de Memória relacionados com a Capacidade

Cada um dos parâmetros a seguir está localizado sob /proc/sys/vm/ no sistema de arquivo do proc.
overcommit_memory
Define as condições que determinam se uma requisição de memória grande é aceita ou negada. Existem três valores possíveis para este parâmetro:
  • 0 — A configuração padrão. O kernel realiza o overcommit heurístico do kernel, manuseando isto através da estimativa da quantia de memória disponível e queda de requisições que sejam totalmente inválidas. Infelizmente, como a memória é alocada utilizando um heurístico ao invés de um algorítimo preciso, esta configuração pode as vezes permitir que a memória disponível no sistema seja sobrecarregada.
  • 1 — O kernel não faz manuseio de overcommit de memória. Sob esta configuração, o potencial para sobrecarga de memória aumenta, como também o desempenho para tarefas intensivas de memória.
  • 2 — The kernel nega requisições para memórias iguais ou maiores do que a quantia de swap total disponível e a porcentagem de RAM física especificada em overcommit_ratio. Esta configuração é a melhor se você quiser diminuir o risco de overcommit de memória.

    Nota

    Esta configuração é recomendada somente para sistemas com áreas de swap maiores do que sua memória física.
overcommit_ratio
Especifica a porcentagem da RAM física considerada quando o overcommit_memory está definido para 2. O valor padrão é 50.
max_map_count
Define o número máximo de áreas de mapa de memória que um processo pode utilizar. Na maioria dos casos, o valor padrão de 65530 é adequado. Aumente este valor se seu aplicativo precisar mapear mais do que este número de arquivos.
nr_hugepages
Define o número de hugepages configurado no kernel. O valor padrão é 0. É possível alocar (ou desalocar) hugepages, somente se existirem páginas livres contínuas fisicamente no sistema. As páginas reservadas por este parâmetro não podem ser utilizadas para outros propósitos. Mais informações podem ser obtidas da documentação instalada: /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt

Ajustes de Kernel relacionados com a Capacidade

Cada um dos parâmetros a seguir está localizado sob o sistema de arquivo do proc /proc/sys/kernel/ no sistema de arquivo do proc.
msgmax
Define o tamanho permitido em bites de qualquer mensagem única em uma fila de mensagem. Este valor não deve exceder o tamanho da fila (msgmnb). O valor padrão é 65536.
msgmnb
Define o tamanho máximo em bites de uma única fila de mensagem. O valor padrão é 65536 bytes.
msgmni
Define o número máximo de identificadores de filas de mensagens (e portanto o número máximo de filas). O valor padrão em máquinas com arquitetura 64-bit é de 1985; for 32-bit architecture, the default value is 1736.
shmall
Define a quantia total de memória compartilhada em bites que possa ser utilizada no sistema de uma só vez. O valor padrão para máquinas com arquitetura de 64-bit é de 4294967296; para arquiteturas 32-bit o padrão é de 268435456.
shmmax
Define o segmento máximo de memória compartilhada pelo kernel, em bites. O valor padrão em máquinas com arquitetura de 64-bit é de 68719476736; para arquitetura de 32-bit, o valor padrão é de 4294967295. Note, no entanto, que o kernel suporta valores muito maiores do que este.
shmmni
Define o número máximo de amplitude de sistema de sementos de memória compartilhada. O valor padrão é de 4096em ambas arquiteturas de 64-bit e 32-bit.
threads-max
Define o número máximo de amplitude de sistema de discussões (tarefas) a serem utilizadas pelo kernel de uma só vez. O valor padrão é igual ao valor max_threads do kernel. A formula em uso é:
max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE )
O valor mínimo dethreads-max é de 20.

Ajustes de Sistema de Arquivo Relacionada com a Capacidade

Cada um dos parâmetros a seguir está localizado sob o sistema de arquivo proc /proc/sys/fs/.
aio-max-nr
Define o número máximo permitido de eventos em todos os contextos de E/S assíncrona. O valor padrão é de 65536.Note que ao modificar este valor, você não pré-aloca ou redimensiona qualquer estrutura de dados do kernel.
file-max
Lista o número máximo de manuseio de arquivo que o kernel aloca. O valor padrão coincide com o valor de files_stat.max_files no kernel, o qual está definido para o valor maior entre os (mempages * (PAGE_SIZE / 1024)) / 10, ou NR_FILE (8192 in Red Hat Enterprise Linux). Aumentar este valor pode resolver erros causados pela falta de manuseios de arquivos disponíveis.

Ajustes Out-of-Memory Kill

Out of Memory (OOM) se refere a um estado de computação onde todas as memórias, incluindo o espaço swap, foi alocada. Por padrão, esta situação faz com que o sistema trave e pare de funcionar como deveria. No entanto, configurar o parâmetro /proc/sys/vm/panic_on_oom para 0 instrui o kernel a chamar a função oom_killer quando ocorrer o OOM. Geralmente o oom_killer pode eliminar processos invasores e o sistema sobrevive.
O parâmetro a seguir pode ser definido por processo, fornecendo maior controle sobre quais processos são eliminados pela função oom_killer. Está localizada em /proc/pid/ no sistema de arquivo do proc, onde pid é o ID do processo.
oom_adj
Define um valor a partir de-16 até 15 que ajuda a determinar o oom_score de um processo. Quanto maior o valor do oom_score maior a probabilidade do processo ser eliminado pelo oom_killer. Configurar um valor oom_adj de -17 desabilita o oom_killer para aquele processo.

Importante

Qualquer processo gerado pelo processo ajustado, irá herdar o oom_score daquele processo. Por exemplo, se um processo sshd é protegido da função oom_killer , todos os processos iniciados pela sessão SSH também serão protegidas. Isto pode afetar a habilidade das funções do oom_killer para salvar o sistema se ocorrer um OOM.