[FoLUG] fork() on linux returns ENOMEM
Enrico Placci
e.placci@gmail.com
Gio 1 Nov 2012 14:13:12 CET
Ciao,
Come va? Era da troppo tempo che non spammavo la lista , ritorno con un
grattacapo non da poco :-).
Dunque lo scopo finale del mio script e` bombardare un server mysql con
1000, 2000 queries simultaneamente (benchmarks).
Per cominciare ho scritto uno script che forka (?) 1000 o 2000 processi,
poi manda SIGUSR1 a tutti i processi (al gruppo) , i quali stampano il
millisecondo in cui hanno ricevuto il segnale, il numero del processo e il
pid.
Dopo un po' di smanettamento attorno agli user limits nel mio mac sono
riuscito a farlo girare con 2000 forks. Il limite era 700 ed ho potuto
verificare che e` un limite che ha decisamente senso (Core i5 1.7Ghz 4GB
RAM).
Al che sono passato al server linux:
16 Intel(R) Xeon(R) CPU X7350 @ 2.93GHz
32 GB RAM
free -m
total used free shared buffers cached
Mem: 32235 7142 25093 0 85 4572
-/+ buffers/cache: 2484 29750
Swap: 0 0 0
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Dopo 639 processi ricevo
./simulkill.scaled:5:in `fork': Cannot allocate memory - fork(2)
(Errno::ENOMEM)
Allego lo script e il "strace"
Ho letto che ENOMEM puo` essere "ritornato" anche nel caso si esauriscano
risorse che non sono la memoria, qualcuno ha qualche idea su che limite mi
sta bloccando?
Ho provato aumentando open files a 3000 ma non ha aiutato.
Grazie
Ciao
Enrico
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: trace.gz
Tipo: application/x-gzip
Dimensione: 22926 bytes
Descrizione: non disponibile
URL: <http://lists.linux.it/pipermail/folug/attachments/20121101/4b9a80d2/attachment-0001.bin>
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: simulkill.scaled
Tipo: application/octet-stream
Dimensione: 687 bytes
Descrizione: non disponibile
URL: <http://lists.linux.it/pipermail/folug/attachments/20121101/4b9a80d2/attachment-0001.obj>
Maggiori informazioni sulla lista
FoLUG