
README
======

This archive contains a patch for release 7.5.00.19/Linux/i386.
To install, replace your existing file 'dbmcli' with the one
contained in the archive.

It solves the following problem:

With version 7.5.00.19, "LD_ASSUME_KERNEL=2.2.5" is being added to the
environment before starting the kernel. This environment variable is
needed to select the pthread library implementing 'linuxthread' support,
since default for 2.6 kernels is NPTL (native posix thread library).
This was done in dbmsrv module RTE_ActiveDatabase.cpp.

Unfortunately it has a negative side effect on the 'standard' 2.4.

Since "2.2.5" selects compatiblity with OS API for 2.2.5 kernels (see
/sbin/ldconfig -p |grep pthread), it makes much more sense to use
"LD_ASSUME_KERNEL=2.4.1". In fact the value "2.2.5" forces the kernel to
load '/lib/libpthread.so.0' instead of '/lib/i686/libpthread.so.0'. That
pthread library in '/lib' also works, but it allocates the stacks of the
threads in the same virtual address space that is also used by malloc().
This effectively limits the maximum available amount of pages (i.e. for
datacache). Depending on the amount of threads started and especially
the amount of user tasks configured this can sum up to lots of
megabytes... The implementation in /lib/i686/libpthread.so.0 select a
different virtual address range for the stacks, that is normally only
used for DLL loading. Therefore it allows on a Linux 2.4 kernel to
allocate more memory for data cache.

There is no easy workaround for this 'bad environment' but to reduce
CACHE_SIZE or to replace dbmsrv with a version not containing that
'LD_ASSUME_KERNEL=2.2.5'.


Support: MaxDB Maling List http://lists.mysql.com/maxdb

