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
Procedimento
Para atualizar os parâmetros do kernel no Red Hat e no SUSE Linux®:
- Executar o comando ipcs -l para listar as configurações atuais do parâmetro do kernel.
- 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 - Em sistemas operacionais Linux de 32-bit bits, a configuração mínima forçada para SHMMAX é limitada a 4294967295byte,s.
- 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.
- 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.
- 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 - Executar sysctl com parâmetro -p para carregar em sysctl configurações do arquivo padrão /etc/sysctl.conf:
sysctl -p - 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.