Hi Scott, all!

Scott Fletcher wrote:
Hi!

            I am in the process of upgrading the machine with everything
to a newer versions.  This time, I'm getting rid of the IBM DB2 as it
won't be there.  So, I downloaded the MySQL 64 bits for the AIX and
extracted it there.  The AIX server use 64 bits kernel and Enhanced
Journal File System (JFS2).  It also have 1 GB of RAM and 35 GB Hard
Disk.  I remembered that running this test is require to make sure MySQL
work properly and can handle the workload with the machine.  So, I typed
the mysql-test-run command and here's what I got.

[[...]]

func_compress                  [ fail ]

Errors are (from /usr/local/mysql/mysql-test/var/log/mysqltest-time) :

mysqltest: At line 48: query 'select compress(repeat('aaaaaaaaaa',
IF('', 10, 10000000))) is null' failed: 5: Out of memory (Needed
120000024 bytes)

[[...]]

I'm a little baffled because the server have 1 GB of RAM.  Something is
wrong.  So, what's up with that?

Well, I trust you did your math:
   IF('', 10, 10000000)              evaluates to 10000000 (ten million)

   repeat('aaaaaaaaaa', IF('', 10, 10000000))   evaluates to
      repeat('aaaaaaaaaa', 10000000)            which evaluates to
                  ten million repetitions of a ten character string

So the command demands the compression of a (roughly) 100 MB string, and it should not be too surprising it requires 120 MB for this. (Yes, inexact - I ignored the distinction between 10^3 and 2^10, these are just first approximations.)


If you want this to succeed, ensure that the MySQL server process is started with "unlimited" memory settings, so that it can dynamically allocate a sufficient amount of RAM. The mere presence of that RAM (or swap space) does not yet give a process the rights to allocate it.

I think you may safely ignore this test failure, if all other tests pass - this kind of failure is to be expected unless the machine setup is specifically tailored. But if you expect your MySQL server to allocate large amounts of RAM, it may be better to configure it so that the test passes. One way to do this is the command we use on our build + test box:

   ulimit -d unlimited

Note that it must be executed in the shell (hierarchy) that later starts the server, so you have to integrate it at a suitable place.


Regards,
Joerg

--
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