Modifying kernel parameters for Db2 Connect (Linux)
Before users install a Db2® database system, update your Linux® kernel parameters. The default values for particular kernel parameters on Linux are not sufficient when users run a Db2 database system.
Before you begin
Procedure
To update the kernel parameters on Red Hat and SUSE Linux systems, follow the steps:
- Run the ipcs -l command.
- If any necessary changes are required for your system, analyze the
output. Comments are added following the
//
to show what the parameter names are.# 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
- Beginning with the first section on Shared Memory Limits, SHMMAX and SHMALL are the parameters
that need to be looked at. SHMMAX is the maximum size of a shared memory segment on a Linux system whereas SHMALL is the maximum allocation of shared
memory pages on a system.
- It is recommended to set the SHMMAX value to be equal to the amount of physical memory on your system. However, the minimum that is required on x86 systems is 268435456 (256 MB) and for 64-bit systems, it is 1073741824 (1 GB).
- SHMALL is set to 8 GB by default (8388608 KB = 8 GB). If you have more physical memory than 8
GB, and it is to be used for the Db2 database system, then
this parameter increases to approximately 90% of your computer's physical memory. For instance, if
you have a computer system with 16 GB of memory to be used primarily for the Db2 database system, then
SHMALL can be set to 3774873 (90% of 16 GB is 14.4 GB; 14.4 GB is then divided by 4 KB, which is the
base page size). The
ipcs
output converts SHMALL into kilobytes. The kernel requires this value as a number of pages. If you are upgrading to Db2 version 12.1 and you are not using the default SHMALL setting, you must increase the SHMALL setting by an extra 4 GB. This increase in memory is done by the fast communication manager (FCM) for more buffers or channels.
- The next section covers the amount of semaphores available to the operating system. The kernel parameter sem consists of four tokens, SEMMSL, SEMMNS, SEMOPM, and SEMMNI. SEMMNS is the result of SEMMSL multiplied by SEMMNI. The database manager requires that the number of arrays (SEMMNI) be increased as necessary. Typically, SEMMNI can be twice the maximum number of agents that are expected on the system that is multiplied by the number of logical partitions on the database server computer plus the number of local application connections on the database server computer.
- The third section covers messages on the system.
- MSGMNI affects the number of agents that can be started, MSGMAX affects the size of the message that can be sent in a queue, and MSGMNB affects the size of the queue.
- MSGMAX can change to 64 KB (that is, 65535 bytes), and MSGMNB can be increased to 65535.
- Beginning with the first section on Shared Memory Limits, SHMMAX and SHMALL are the parameters
that need to be looked at. SHMMAX is the maximum size of a shared memory segment on a Linux system whereas SHMALL is the maximum allocation of shared
memory pages on a system.
- To modify these kernel parameters, edit the /etc/sysctl.conf file.
If this file does not exist, create it. The following lines are examples of what are placed into the file:
kernel.sem=250 1024000 32 1024 #Example shmmax for a 64-bit system kernel.shmmax=1073741824 #Example shmall for 90 percent of 16 GB memory kernel.shmall=3774873 kernel.msgmax=65535 kernel.msgmnb=65535 kernel.msgmni=2048
- Run sysctl with -p parameter
to load in sysctl settings from the default file
/etc/sysctl.conf:
sysctl -p
- To make the changes effective after every restart, run the following based on the user
system:
- (SUSE Linux) Make boot.sysctl active
- (Red Hat) The rc.sysinit initialization script reads the /etc/sysctl.conf file automatically.