DB2 - Problem description
Problem IC84158 | Status: Closed |
FAILURE TO ATTACH WHILE ALLOCATING MANY SMALLER SEGMENTS TO SATISFY A LARGE ALLOCATION (> 256GB) | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
This issue impacts Linux systems running SLES 11 and RHEL 6 which use a top-down process address space layout model. On a Linux AMD64 systems with available RAM > 256GB, DB2 might attempt creation of a shared memory segment with a size bigger then 256GB. The allocation fails because of the internal Linux limitation of the size of the shared memory segment with regular 4k pages. In cases like that DB2 fails back to creation of many 1GB memory segments. The attempt of attaching to those segments may fail with an error in the db2diag.log like the following: 2011-11-11-16.03.22.067021+000 E1756E494 LEVEL: Error (OS) PID : 49511 TID : 140737068918528PROC : db2sysc 0 INSTANCE: db2inst1 NODE : 000 DB : SAMPLE APPHDL : 0-7 APPID: *LOCAL.db2inst1.111111160322 AUTHID : db2inst1 EDUID : 26 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, SQO Memory Management, sqloMemCreateSingleSegment, probe:100 CALLED : OS, -, shmget OSERR: EINVAL (22) 2011-11-11-16.03.22.072365+000 E2251E781 LEVEL: Severe PID : 49511 TID : 140737068918528PROC : db2sysc 0 INSTANCE: db2inst1 NODE : 000 DB : SAMPLE APPHDL : 0-7 APPID: *LOCAL.db2inst1.111111160322 AUTHID : db2inst1 EDUID : 26 EDUNAME: db2agent (SAMPLE) 0 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 387 segments totalling 415434866688 bytes starting at address 0x0000000000000000. One possible cause may be an improper setting for the shmmax Linux kernel tuneable. 2011-11-11-16.03.22.072829+000 E3033E951 LEVEL: Warning PID : 49511 TID : 140737068918528PROC : db2sysc 0 INSTANCE: db2inst1 NODE : 000 DB : SAMPLE APPHDL : 0-7 APPID: *LOCAL.db2inst1.111111160322 AUTHID : db2inst1 EDUID : 26 EDUNAME: db2agent (SAMPLE) 0 FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase::FirstConnect, probe:100 MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG "No Storage Available for allocation" DIA8305C Memory allocation failure occurred. DATA #1 : String, 299 bytes Failed to allocate the desired database shared memory set. The configured DATABASE_MEMORY plus desired overflow may have exceeded INSTANCE_MEMORY or the maximum shared memory on the system. Attempting to start up with a smaller overflow allowance. Desired database shared memory set size is (bytes): DATA #2 : unsigned integer, 8 bytes 415434801152 | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * Any using > 256GB shared memory * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to Version 10.1 Fixpack 1 or later * **************************************************************** | |
Local Fix: | |
A workaround on SLES 11 / RHEL 6 is to update the Linux kernel parameter vm.legacy_va_layout=1 prior to issuing db2start. This will revert to the "bottom-up" address layout used prior to SLES 11 / RHEL 6. In this case multiple segments can be attached contiguously upwards. Fragmentation can still be an issue, however (see APAR IC82029) | |
available fix packs: | |
DB2 Version 10.1 Fix Pack 1 for Linux, UNIX, and Windows | |
Solution | |
First fixed in Version 10.1 fixpack 1 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 12.06.2012 05.11.2012 05.11.2012 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.1 | |
10.5.0.1 |