Some time ago I get brand new IBM POWER6 server as the replacement for “old” P5 used to host Oracle database. Because we planed to use advanced virtualization with VIOS + LPAR/DLPAR I conceived the idea to use one spare partition for MySQL tests. Because I had no past experience with it and there is not much documentation all around the web, I tried to set-up system and database traditional way. The first problem I hit was memory allocation and I think it is the best place share my remarks. Let’s start from the beginning..
For any reason, you decided to run MySQL database on AIX 5L operating system. You compiled it successfully, configured and.. unluckily database didn’t start due to memory allocation problem?
Basically, for some historical reasons AIX OS will allow your application to allocate maximum 256MB of memory per process by default. To use more, you have to use “Large Address Space” memory model so AIX will split memory into 256MB data segments, making possible to reserve more than one segment per single process.
You may set it up different ways:
- – using â€“bmaxdata=0xN000000 option for linker
- – setting MAXDATA value in LDR_CNTRL as run-time
[ LDR_CNTRL='MAXDATA=0xN000000' ] – where N is the number of segments.
So, to make your MySQL working fine:
It allows database to allocate 2GB of memory ( 8*256MB ) which is maximum value for 32-bit compiled applications.
But how to deal with 64-bit systems? It’s quite easy, but you have to remember about setting OBJECT_MODE to 64 for both, self-compiled and binary distributed databases. After it, you will be able to set up bigger segments multiplier in MAXDATA variable at run-time.