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 emovercommit_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 para2
. 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 is1736
. 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 é de268435456
. 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 é de4294967295
. 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
4096
em 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
é de20
.
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
, ouNR_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 ooom_score
de um processo. Quanto maior o valor dooom_score
maior a probabilidade do processo ser eliminado pelooom_killer
. Configurar um valoroom_adj
de-17
desabilita ooom_killer
para aquele processo.Importante
Qualquer processo gerado pelo processo ajustado, irá herdar ooom_score
daquele processo. Por exemplo, se um processosshd
é protegido da funçãooom_killer
, todos os processos iniciados pela sessão SSH também serão protegidas. Isto pode afetar a habilidade das funções dooom_killer
para salvar o sistema se ocorrer um OOM.