wireless
25-04-2007, 17:53
salve a tutti,
per capire se è un errore del mio software o un problema diverso sto facendo un po' di prove e leggendo un po' di roba in giro, anche se il materiale è vasto e variegato.
In sostanza, il mio progetto concorrente per il corso, basato sui threads, crasha quando si avvicina ad un limite superiore relativo al numero di threads creati all'interno del processo: cioè, in soldoni, quando arriva a creare x threads, crasha (segmentation fault). Dato che il numero è ebbastanza fisso e credo piccolo ( 200, 500..sotto i mille) per ogni sistema (hardware / software) da me provato, e diverso ovviamente da sistema a sistema, deve esserci un qualche vincolo.
Escludo, anche per quello che ho letto, che dipenda principalmente dall'hardware (anche se la ram è fondamentale, leggevo che linux alloca 2mega per ogni threads...): deve pertanto esserci un vincolo software da qualche parte...ma dove?
dando il comando:
grep THREADS_MAX /usr/include/bits/local_lim.h
si ottiene
#define _POSIX_THREAD_THREADS_MAX 64
si ha un valore che per alcuni è il vincolo cercato, ma ho provato a cambiarlo senza risultati, credo infatti che tale valore viene usato in fase di compilazione del
kernel
gcc
libc
altro...
Vorrei capire come stanno le cose, se devo ricompilare qualcosa e cosa: al limite mi limito (giocone di parole) a 64 threads, sapendo che oltre sforo (nota: il numero di threads max da me trovato è > di 64, ma non sono riuscito a determinate se quello da me trovato è il numero di thread attivi contemporaneamente o il numero totale di threads creati...)
Qui -> http://www.apsis.ch/pound/pound_list/archi...9/1094031526000
c'è un discorso interessante, anche se vecchiotto, che tira fuori la questione linuxthreads, native posix thread support, ma dando
/lib/libc.so.6
ottengo
GNU C Library development release version 2.4, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.2 20070302 (prerelease) (4.1.2-1mdv2007.1).
Compiled on a Linux 2.6.17 system on 2007-03-07.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU libio by Per Bothner
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
Thread-local storage support included.
For bug reporting instructions, please see:
cioè, pare che il mio libc contenga il supporto agognato a nptl...
Insomma, situazione complessa.
Aiutino?
per capire se è un errore del mio software o un problema diverso sto facendo un po' di prove e leggendo un po' di roba in giro, anche se il materiale è vasto e variegato.
In sostanza, il mio progetto concorrente per il corso, basato sui threads, crasha quando si avvicina ad un limite superiore relativo al numero di threads creati all'interno del processo: cioè, in soldoni, quando arriva a creare x threads, crasha (segmentation fault). Dato che il numero è ebbastanza fisso e credo piccolo ( 200, 500..sotto i mille) per ogni sistema (hardware / software) da me provato, e diverso ovviamente da sistema a sistema, deve esserci un qualche vincolo.
Escludo, anche per quello che ho letto, che dipenda principalmente dall'hardware (anche se la ram è fondamentale, leggevo che linux alloca 2mega per ogni threads...): deve pertanto esserci un vincolo software da qualche parte...ma dove?
dando il comando:
grep THREADS_MAX /usr/include/bits/local_lim.h
si ottiene
#define _POSIX_THREAD_THREADS_MAX 64
si ha un valore che per alcuni è il vincolo cercato, ma ho provato a cambiarlo senza risultati, credo infatti che tale valore viene usato in fase di compilazione del
kernel
gcc
libc
altro...
Vorrei capire come stanno le cose, se devo ricompilare qualcosa e cosa: al limite mi limito (giocone di parole) a 64 threads, sapendo che oltre sforo (nota: il numero di threads max da me trovato è > di 64, ma non sono riuscito a determinate se quello da me trovato è il numero di thread attivi contemporaneamente o il numero totale di threads creati...)
Qui -> http://www.apsis.ch/pound/pound_list/archi...9/1094031526000
c'è un discorso interessante, anche se vecchiotto, che tira fuori la questione linuxthreads, native posix thread support, ma dando
/lib/libc.so.6
ottengo
GNU C Library development release version 2.4, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.2 20070302 (prerelease) (4.1.2-1mdv2007.1).
Compiled on a Linux 2.6.17 system on 2007-03-07.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU libio by Per Bothner
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
Thread-local storage support included.
For bug reporting instructions, please see:
cioè, pare che il mio libc contenga il supporto agognato a nptl...
Insomma, situazione complessa.
Aiutino?