Does any body know any information about configuration of kernel parameters in sysctl.conf, especially, how to calculate kernel.shmmax and kernel.shmall?
I recently install IBM DB2 9.5 onto FC 10, and I got error message on my connecting to database. The error message is 'SQL1084C Shared memory segments cannot be allocated. SQLSTATE=57019'. This means I need to reconfigure /etc/sysctl.conf to change the size of the shared memory.
To figure out how to set the kernel parameters, I checked online and found many different stories.
1. I followed IBM document at http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/t0008238.html. My Power Edge has four GB, as specified in IBM document, we should use physical memory for kermel.shmmax, so I set:
kernel.shmall=943718 (4GB * 90% * 1024 * 1024 / 4)
But then after I invoked sysctl -p, and then ipcs -l, I got max seg size (kbytes) = 0. It did not work out.
I later set it as:
kernel.sem=250 25600 32 1024
and actually I got
# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (kbytes) = 4294967296 ( 4 GB!)
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide = 25600
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 1024
max size of message (bytes) = 65535
default max size of queue (bytes) = 65535
Redhat gave a example for Oracle, http://www.redhat.com/docs/manuals/csgfs/oracle-guide/s1-ora-nodes.html. But they did not tell how they got these values, for how much physical memory.
Some other people told kernel.shmmax should be half of the RAM, like http://freekdhooge.wordpress.com/2007/11/11/linux-unix-kernel-parameters/.
So, where can I got some solid, authoritative information on this, especially from Redhat?
I would truly appreciate your advices.
Thank you very much.