Modificación de los parámetros del kernel (Linux)

Para instalaciones de root, el gestor de bases de datos utiliza una fórmula para ajustar automáticamente los valores de parámetro de kernel y eliminar la necesidad de actualizaciones manuales en estos valores.

Antes de empezar

Para modificar parámetros del kernel, debe tener autorización de usuario root.

Procedimiento

Para actualizar los parámetros de kernel en Red Hat y SUSE Linux®:

  1. Ejecute el mandato ipcs -l para listar los valores de parámetro de kernel actuales.
  2. Analice la salida del mandato para determinar si tiene que cambiar o no los valores del kernel comparando los valores actuales con los valores mínimos aplicados en la tabla siguiente.
    Parámetro del kernel de IPC Valor mínimo impuesto
    kernel.shmmni (SHMMNI) 256 * <size of RAM in GB>
    kernel.shmmax (SHMMAX) <size of RAM in bytes>1
    kernel.shmall (SHMALL) 2 * < tamaño de RAM en el tamaño de página predeterminado del sistema >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. En sistemas operativos Linux de 32 bits, el valor mínimo impuesto para SHMMAX está limitado a 4 294 967 295 bytes.
    2. SHMALL limita la cantidad total de memoria compartida virtual que puede asignarse en un sistema. Cada servidor de datos Db2® gestiona de forma eficiente la cantidad de memoria del sistema que consume, también conocida como memoria confirmada. El servidor de datos Db2 asigna más memoria virtual de la que confirma para dar soporte a la preasignación de memoria y a la gestión de memoria dinámica. La preasignación de la memoria beneficia al rendimiento. La gestión de memoria dinámica es el proceso de aumentar y disminuir el uso de memoria real en áreas separadas de memoria compartida virtual. Para dar soporte eficazmente a la preasignación de memoria y a la gestión de memoria dinámica, los servidores de datos deben asignar, con frecuencia, más memoria compartida virtual en un sistema que la cantidad de RAM física. El kernel requiere este valor como un número de páginas.
    3. El rendimiento de la carga podría beneficiarse de un límite de tamaño de cola de mensajes mayor, especificado en bytes mediante MSGMNB. Puede ver el uso de la cola de mensajes ejecutando el mandato ipcs -q . Si las colas de mensajes están a su máxima capacidad, o a punto de alcanzarla, durante las operaciones de carga, piense en aumentar el número de bytes del límite de tamaño de la cola de mensajes.
    El texto siguiente es un ejemplo de la salida del mandato ipcs con comentarios añadidos tras // para mostrar cuáles son los nombres de los 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
    • A partir de la primera sección sobre Límites de memoria compartida, el límite SHMMAX es el tamaño máximo de un segmento de memoria compartida en un sistema Linux . El límite SHMALL es la asignación máxima de páginas de memoria compartida en un sistema.
      • Es recomendable establecer el valor SHMMAX de forma que sea igual a la cantidad de memoria física del sistema. Sin embargo, el mínimo necesario en los sistemas x86 es 268435456 (256 MB) y para sistemas de 64 bits es 1073741824 (1 GB).
    • La sección siguiente trata de la cantidad de semáforos disponibles para el sistema operativo. El parámetro del kernel sem está formado por cuatro símbolos: SEMMSL, SEMMNS, SEMOPM y SEMMNI. SEMMNS es el resultado de multiplicar SEMMSL por SEMMNI. El gestor de bases de datos necesita que el número de conjuntos (SEMMNI) aumente según sea necesario. Normalmente, SEMMNI debe ser el doble que el número máximo de agentes esperados en el sistema multiplicado por el número de particiones lógicas del sistema servidor de bases de datos más el número de conexiones de aplicación locales del sistema servidor de bases de datos.
    • La tercera sección trata de los mensajes del sistema.
      • El parámetro MSGMNI afecta al número de agentes que pueden iniciarse. El parámetro MSGMAX afecta al tamaño del mensaje que puede enviarse en una cola y el parámetro MSGMNB afecta al tamaño de la cola.
      • El parámetro MSGMAX debe cambiarse a 64 KB (es decir, 65536 bytes) y el parámetro MSGMNB debe aumentarse hasta 65536.
  3. Modifique los parámetros de kernel que tiene que ajustar editando el archivo /etc/sysctl.conf . Si este archivo no existe, créelo.
    Las líneas siguientes son ejemplos de lo que debe colocarse en el archivo:
    #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. Ejecute sysctl con el parámetro -p para cargar en sysctl los valores del archivo predeterminado /etc/sysctl.conf:
       sysctl -p
  5. Opcional: Haga que los cambios persistan después de cada rearranque:
    • (SUSE Linux) Active boot.sysctl .
    • (Red Hat) El script de inicialización rc.sysinit lee el archivo /etc/sysctl.conf automáticamente.