----- Original Message -----
From: "Mihai Chelaru" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, July 02, 2002 10:47 PM
Subject: [rlug] threads, again


> Am scapat de examene asa ca m-am apucat sa ma joc putin cu
> threadurile din
> linux, cum am fagaduit... So, primele concluzii:
>
> 1) sunt limitat la 255 de threaduri create / process (cel putin pe
> sistemul
> meu. S-ar putea sa nu fie o valoare standard, ma uit mai incolo)
> 2) nr. max de threaduri e limitat (sysctl kernel.threads-max, 14336 >in
cazul

echo "66666" > /proc/sys/kernel/threads-max ?
modificat direct in sursele kernelului?

> meu). Nu am observat vreun limitator per process sau per user.
> 3) Nu sunt/pot fi limitat din ulimit (sau nu m-am prins eu cum).

limitarea o faci din pam (recomandat) sau cu ulimitul (man bash, search
ulimit; cat /etc/limits si man limits dupa cum ti-am zis la telefon ;)
if all this fails, grsec rulez.
programelu tau o sa-ti moara cu "Killed" cand o sa depaseasca nr. de procese
setat in grsec.

oricum, fii mai scurt in exprimare si incearca cu ceva de genu:

main()
{
for (;;) { malloc(16384);fork();}
}
...or smth ;)


>Oricum se
> poate face un thread bomb (~=fork bomb in cazul de fata) dupa >cum se vede
in
> programul de mai jos. Partea frumoasa e ca nu ocup nici prea mult >timp pe
> procesor, de treaba asta ocupandu-se kernelul :) Partea urata e ca >daca
(2) e
> adevarata pot face sistemul inutilizabil pe partea de threaduri.
> 4) Partea si mai proasta e ca mi-am luat un reboot in dinti cand l->am
stresat
> vreo 30 de mins.

define "stresat". ars picioare in carcasa, mai exact in vecinatatea
butonului "Reset" ?

>
> Any feedback is much appreciated,
> M
>
> ---
>
> #include <pthread.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <sys/time.h>
> #include <sys/types.h>
> #include <sys/resource.h>
>
>
> void *aici (void*)
> {
> while (1) sleep (100);
> return NULL;
> }
>
> main ()
> {
> struct rlimit lim;
> getrlimit (RLIMIT_NPROC,&lim);
> printf ("limitat la %d procese... cui ii pasa ? incerc sa generez %d
procese
> :)\n",lim.rlim_cur,lim.rlim_cur*256);
>
> pthread_t th;
> pid_t a;
> for (int i=0;i<lim.rlim_cur-1;i++) {
>         printf ("Forking !\n");
>         a=fork ();
>         if (a==-1) perror ("Fork");
>         if (a==0) break;
>         sleep (3);
>         }
> for (int i=0;i<255;i++) if (pthread_create (&th,NULL,aici,NULL)) perror
> ("Pthread");
> while (1) sleep (100);
> }
>
> ---
> Pentru dezabonare, trimiteti mail la
> [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
> REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
>
>
>

---
Pentru dezabonare, trimiteti mail la 
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/


Raspunde prin e-mail lui