IBM Support

DB2 warning message ADM6073W received during slow performance on Linux server

Question & Answer


Question

Why am I periodically receiving ADM6073W and observing slow performance?

Answer

This may be due to an improper kernel setting or excessive values configured for the database shared memory. It is likely an incorrect kernel setting if you see the following in the db2diag.log:
2009-09-09-11.22.44.341997-300 E521197573G771 LEVEL: Warning
PID : 11111 TID : 3079662433 PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : DB1
APPHDL : 0-7 APPID: *LOCAL.db2inst1.090721202848 AUTHID : DB2INST1
EDUID : 16 EDUNAME: db2agent (DB2INST1)
FUNCTION: DB2 UDB, SQO Memory Management, sqloGetSharedMemoryFromOs, probe:2028
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
DATA #1 : <preformatted>
Unable to attach 10 segments totalling 2625961984 bytes starting at
address
0x00000000. One possible cause may be an improper setting for the
shmmax Linux kernel tuneable.

2009-09-09-16.22.44.342333-300 I521198345G937 LEVEL: Warning
PID : 11111 TID : 3079662433 PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : DB1
APPHDL : 0-7 APPID: *LOCAL.db2inst1.090721202848
AUTHID : DB2INST1
EDUID : 16 EDUNAME: db2agent (DB2INST1)
FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase::FirstConnect,
probe:1516
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
DATA #1 : String, 286 bytes
Failed to allocate the desired database shared memory set.
Check to make sure the configured DATABASE_MEMORY + overflow
does not exceed the maximum shared memory on the system.
Attempting to start up with only the system buffer pools.
Desired database shared memory set size is (bytes):
DATA #2 : unsigned integer, 4 bytes
2625896448

If you are receiving the above two messages in the db2diag.log, and if DB2 is running on a 32-bit version of Linux, it is advisable to increase SHMMAX up to a value of 4GB. You can run "ipcs -l" to see what SHMMAX is currently set to.


NOTE: "ipcs -l" returns the value for SHMMAX in 1 kilobyte pages).

Example:

------ Shared Memory Limits --------
max number of segments = 4096                //SEMMNI
max seg size (kbytes) = 1048576              //SHMMAX
max total shared memory (kbytes) = 8388608   //SHMALL
min seg size (bytes) = 1

If DB2 is running on a 64-bit version of Linux it is advisable to set SHMMAX equal to the amount of physical memory.

If you are not receiving any messages about the SHMMAX setting then the database shared memory may be configured too high and the operating system is unable to provide the requested amount of memory. In this case it is advisable to check what you currently have configured for:

    - bufferpools
    - locklist
    - sheapthres_shr
    - dbheap
    - util_heap_sz
    - pckcache_sz

Check to see that the above does not add up to a value exceeding physical memory. One method would be to run "free -m" when the database is not activated to see how much free memory is available.

$ free -m
               total  used  free shared buffers cached
Mem:           1509   944   565  0      42      530
-/+ buffers/cache:    370   1138
Swap:          996    42    953

(focus on the free memory listed under "-/+ buffers/cache")

The free memory available should be greater than the total sum of the database shared memory. If there does not appear to be enough free memory you can tune down one or more database shared memory consumers or add more memory to the machine.

[{"Product":{"code":"SSEPGG","label":"DB2 for Linux- UNIX and Windows"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Operating System \/ Hardware - Memory Management","Platform":[{"code":"PF016","label":"Linux"}],"Version":"9.7;9.5;9.1;8","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21398930