Ich kann mein ubuntu mit einer kleinen C-Applikation einfrieren...
Alexander Beck-Ratzka
alexander.beck-ratzka at aei.mpg.de
Di Okt 25 12:14:39 UTC 2011
Hallo Liste,
also etwas erschrocken war ich schon, als ich mittels dieses kleinen
Testprogramms
[snip]
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#define NUM_THREADS 5000
void *PrintHello(void *threadid)
{
char *command="ls";
long tid;
tid = (long)threadid;
sleep(1);
//pthread_exit(NULL);
system(command); // hier wget
printf("Hello World! It's me, thread #%ld!\n", tid);
sleep(1);
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0; t<NUM_THREADS; t++){
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d; error code:
%s\n", rc, strerror(rc));
exit(-1);
}
}
sleep(30);
pthread_exit(NULL);
}
testen wollte, wieviele pthreads (P=POSIX) ich parallel öffnen kann.
pthread_create liefert im Fehlerfalle einen rc !=0 zurück, der einem errno
entspricht.
Was soll ich sagen: es werden anstandslos die 5000 Threads gestartet, und dann
friert mein System ein, nur noch ausschalten hilft, nicht einmal die Magic-
Keys funktionieren.
Die Manpage zu pthread_create sagt aus:
[snip]
ERRORS:
EAGAIN Insufficient resources to create another thread, or a system-
imposed limit on the number of threads was encountered. The latter case may
occur in two ways: the RLIMIT_NPROC soft resource limit (set via
setrlimit(2)), which limits the number of process for a real user ID, was
reached; or the kernel's system-wide limit on the number of threads,
/proc/sys/kernel/threads-max, was reached.
[snip]
leztere , also /proc/sys/kernel/threads-max liegt bei 126601
Es ist also recht einfach ein ubuntu 11.04 (das Release benutze ich) zum
Erliegen zu bringen. Ich habe die Systemvoreinstlelungen nicht modifiziert.
Eigentlich hätte ich erwartet, dass es ein Thread-Limit gibt, welches schon
lange bevor das Syssten einfriert, erreicht wird.
Liebe Grüße
Alexander
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://lists.ubuntu.com/archives/ubuntu-de/attachments/20111025/a3dbc4b7/attachment.html>
Mehr Informationen über die Mailingliste ubuntu-de