My apologies.  I intended to send this to the LINUX-390 list.  

Thanks,
Jon


-----Original Message-----
From: The IBM z/VM Operating System [mailto:[EMAIL PROTECTED]
Behalf Of Jon Brock
Sent: Friday, December 08, 2006 2:06 PM
To: IBMVM@LISTSERV.UARK.EDU
Subject: Fork returning EAGAIN


This may not be the correct place to ask this question, but Google isn't 
helping a ton and I can't bear the thought of posting into most other Linux 
fora, so I'm going to run this past you folks first.

To cut to the chase, as part of an effort to figur out why we had trouble with 
a prof-of-concept application that ate every CPU cycle our IFL could give it, I 
have written a couple of small Ruby scripts as a stress-testing mechanism.  The 
basic idea is:

* Create a small test database on our problematic MySQL image.  (Database = 
100,000 rows, each of which has a numeric key and one field consisting of 30 
random alphabetic characters.) this part is fine.

* On another guest, fork a bunch of processes, each of which will read a random 
row from the database, generate another random 30-character string, and update 
the record.


This procedure goes fine as long as I fork a few thousand processes.  Once I 
reach 8500 or so, however, I start receiving this:
Resource temporarily unavailable - fork(2) (Errno::EAGAIN)

According to everything I can find, EAGAIN on fork(2) indicates that the system 
can not allocate sufficient memory to create the child process, but if I issue 
"free -m" while my stress test script is running I show plenty of available 
memory. 

Am I hitting a per-user process limit or some such?  Any ideas?

TIA,
Jon

Reply via email to