Hello Michael!

Michael Gale wrote:
Hello,

I have finished reading something similer on the web, why is there a 2GB limit ?

I assume you are using Linux on an x86 compatible machine (Pentium, Athlon, ...), so you have 32 bit addresses. 32 bit give you 4 G different values; as each address identifies a single byte, you can address 4 GB on the machine.

The Linux kernel differs between user and system addresses, this is essential to pass data around, for example in system calls. Traditionally, this was done on the highest address bit (2 GB system address space, 2 GB user). With the growing size of applications, this has become configurable (with kernel generation) to a 1 / 3 ratio.


If I can compile the kernel to say eys there is 4GB of memory why can mysql not use 3GB of it ?

But still these 3 GB (space of virtual addresses) must hold everything the application (in your case: MySQL) can address, so it contains code, stacks of all threads in the process, static data, all configurable buffers etc.

As a first step, you can use the "size" command on "mysqld" to get some of these values, then calculate the total thread stack space and add it. Subtract that from your user address space size (2 or 3 GB), and distribute the result among all buffers, caches etc.

In any case, I see no way to use 3 GB just for the InnoDB buffer pool on a 32 bit system.


Joerg Bruehe

--
Joerg Bruehe, Senior Production Engineer
MySQL AB, www.mysql.com


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to