Personal tools
You are here: Home DB2 How To's How to alter shmall and shmmax kernel parameters on LINUX
Navigation
Log in


Forgot your password?
 
Document Actions

How to alter shmall and shmmax kernel parameters on LINUX

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

Modifying kernel parameters (Linux)

Before installing a DB2 database system, you should update your Linux(TM) kernel parameters. The default values for particular kernel parameters on Linux are not sufficient when running a DB2 database system. DB2 automatically raises the IPC limits where necessary based on the needs of the DB2 database system. However, it may be more practical to set the limits permanently on your Linux system if you have products or applications other than a DB2 database system.
Prerequisites


    The following is the output from the ipcs -l command.

# ipcs -l


Output:

       ------ 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.

    For SHMMAX, the minimum required on x86 systems would be 268435456 (256 MB) and for 64-bit systems, it would be 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 DB2, then this parameter should be increased to approximately 90% of the physical memory as specified for your computer. For instance, if you have a computer system with 16 GB of memory to be used primarily for DB2, then 90% of 16 GB is 14.4 GB divided by 4 KB (the base page size) is 3774873. The ipcs output has converted SHMALL into kilobytes. The kernel requires this value as a number of pages.

    To modify these kernel parameters, we need to edit the /etc/sysctl.conf file. If this file does not exist, it should be created.

The following lines are examples of what should be placed into the file:


    kernel.sem=250 256000 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


    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, boot.sysctl needs to be active on SUSE Linux. On Red Hat, the rc.sysinit initialization script will read the /etc/sysctl.conf file automatically.

Security Awareness
Would you like your company to implement gamification into your security awareness program?





Polls