Modificando Parâmetros do Kernel (Linux)

Para instalações raiz, o gerenciador de banco de dados utiliza uma fórmula para ajustar automaticamente as configurações do parâmetro do kernel e eliminar a necessidade de atualizações manuais para estas configurações.

Antes de iniciar

Você deve ter autoridade root para modificar parâmetros do kernel.

Procedimento

Para atualizar os parâmetros do kernel no Red Hat e no SUSE Linux®:

  1. Executar o comando ipcs -l para listar as configurações atuais do parâmetro do kernel.
  2. Analise a saída de comando para determinar se você tem que alterar configurações do kernel ou não comparando os valores atuais com as configurações mínimas impostas na tabela a seguir.
    Parâmetro do kernel de IPC Aplicando configuração mínima
    kernel.shmmni (SHMMNI) 256 * <size of RAM in GB>
    kernel.shmmax (SHMMAX) <size of RAM in bytes>1
    kernel.shmall (SHMALL) 2 * < tamanho de RAM no tamanho da página do sistema padrão>2
    kernel.sem (SEMMNI) 256 * <size of RAM in GB>
    kernel.sem (SEMMSL) 250
    kernel.sem (SEMMNS) 256 000
    kernel.sem (SEMOPM) 32
    kernel.msgmni (MSGMNI) 1 024 * <size of RAM in GB>
    kernel.msgmax (MSGMAX) 65 536
    kernel.msgmnb (MSGMNB) 65 536 3
    1. Em sistemas operacionais Linux de 32-bit bits, a configuração mínima forçada para SHMMAX é limitada a 4294967295byte,s.
    2. SHMALL limita a quantidade total de memória compartilhada virtual que pode ser alocada em um sistema. Cada servidor de dados Db2® gerencia eficientemente a quantidade de memória do sistema que consome, também sabe como memória comprometida. O servidor de dados Db2 aloca mais memória virtual do que se compromete a suportar pré-alocação de memória e gerenciamento de memória dinâmica. A pré-alocação de memória beneficia o desempenho. O gerenciamento de memória dinâmica é o processo de crescimento e redução do uso de memória real em áreas de memória compartilhada virtual separada. Para suportar a pré-alocação de memória e o gerenciamento de memória dinâmica de modo eficiente, geralmente os servidores de dados precisam alocar mais memória compartilhada virtual em um sistema do que a quantia de RAM física. O kernel requer esse valor como um número de páginas.
    3. O desempenho do carregamento pode beneficiar-se de um limite de tamanho de fila de mensagens maior, que é especificado em bytes por MSGMNB. É possível visualizar o uso da fila de mensagens executando o comando ipcs -q . Se as filas de mensagens estiverem na capacidade, ou atingindo a capacidade durante operações de carregamento, será recomendável aumentar o número de bytes do limite de tamanho da fila de mensagens.
    O texto a seguir é um exemplo da saída do comando ipcs com comentários inseridos após // para mostrar quais são os nomes dos parâmetros:
       # ipcs -l
    
       ------ Shared Memory Limits --------
       max number of segments = 4096               // SHMMNI	
       max seg size (kbytes) = 32768               // SHMMAX
       max total shared memory (kbytes) = 8388608  // SHMALL
       min seg size (bytes) = 1
    
       ------ Semaphore Limits --------
       max number of arrays = 1024                 // SEMMNI
       max semaphores per array = 250              // SEMMSL
       max semaphores system wide = 256000         // SEMMNS
       max ops per semop call = 32                 // SEMOPM
       semaphore max value = 32767
    
       ------ Messages: Limits --------
       max queues system wide = 1024               // MSGMNI
       max size of message (bytes) = 65536         // MSGMAX
       default max size of queue (bytes) = 65536   // MSGMNB
    • Começando com a primeira seção em Limites de Memória Compartilhada, o limite SHMMAX é o tamanho máximo de um segmento de memória compartilhada em um sistema Linux . O limite SHMALL é a alocação máxima de páginas de memória compartilhada em um sistema.
      • É recomendado configurar o valor SHMMAX para que seja igual à quantia de memória física no sistema. No entanto, o mínimo que é necessário em sistemas x86 seria 268.435.456 (256 MB) e, para sistemas de 64 bits, seria 1.073.741.824 (1 GB).
    • A próxima seção cobre a quantidade de semáforos disponíveis para o sistema operacional. O parâmetro do kernel sem consiste em quatro tokens, SEMMSL, SEMMNS, SEMOPMe SEMMNI. SEMMNS é o resultado de SEMMSL multiplicado por SEMMNI. O gerenciador de banco de dados requer que o número de matrizes (SEMMNI) seja aumentado conforme necessário. Geralmente, SEMMNI deve ser o dobro do número máximo de agentes esperados no sistema multiplicado pelo número de partições lógicas no computador servidor de banco de dados mais o número de conexões de aplicativos locais no computador servidor de banco de dados.
    • A terceira seção cobre mensagens no sistema.
      • O parâmetro MSGMNI afeta o número de agentes que podem ser iniciados. O parâmetro MSGMAX afeta o tamanho da mensagem que pode ser enviada em uma fila e o parâmetro MSGMNB afeta o tamanho da fila.
      • O parâmetro MSGMAX deve ser mudado para 64 KB (ou seja, 65.536 bytes) e o parâmetro MSGMNB deve ser aumentado para 65.536.
  3. Modifique os parâmetros do kernel que você tem que ajustar editando o arquivo /etc/sysctl.conf . Se este arquivo não existir, crie-o.
    As linhas a seguir são exemplos do que deve ser colocado no arquivo:
    #Example for a computer with 16GB of RAM:
    kernel.shmmni=4096
    kernel.shmmax=17179869184
    kernel.shmall=8388608
    #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
    kernel.sem=250 1024000 32 4096
    kernel.msgmni=16384
    kernel.msgmax=65536
    kernel.msgmnb=65536
  4. Executar sysctl com parâmetro -p para carregar em sysctl configurações do arquivo padrão /etc/sysctl.conf:
       sysctl -p
  5. Opcional: Tenha as alterações persistam após cada reboot:
    • (SUSE Linux) Fazer boot.sysctl ativo.
    • (Red Hat) O script de inicialização rc.sysinit lê o arquivo /etc/sysctl.conf automaticamente.