Before installing a DB2® database system, update your Linux kernel parameters. The default values
for particular kernel parameters on Linux are
not sufficient when running a DB2 database
system.
Before you begin
You must have root user authority to modify kernel parameters.
Procedure
To update kernel parameters on Red Hat and SUSE Linux:
- Run the ipcs -l command.
- Analyze the output to determine if there are any necessary
changes required for your system. Comments have been
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 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 this, 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 should 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 has converted SHMALL into kilobytes. The kernel
requires this value as a number of pages. If
you are upgrading to DB2 Version 10.1 and
you are not using the default SHMALL setting, you must increase the
SHMALL setting by an additional 4 GB. This increase in memory is required
by the fast communication manager (FCM) for additional buffers or
channels.
- The next section covers the amount of semaphores available to
the operating system. The kernel parameter sem consists of 4 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 should
be twice the maximum number of agents expected on the system 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 should be change to 64 KB (that is, 65535 bytes), and MSGMNB
should be increased to 65535.
- 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 should be 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 reboot:
- (SUSE Linux) Make boot.sysctl active
- (Red Hat) The rc.sysinit initialization script
will read the /etc/sysctl.conf file automatically