El Mi�rcoles, 19 de Mayo de 2004 23:11, Cristian farias escribio:
> > Si me aburro a ver si hago un programita que haga infinitas copias de s�
> > mismo hasta que pete la memoria, a ver qu� hace el sistema en ese caso.
> > No ser�a nada dif�cil. Ummmmmmmmm...
>
> Una ves me puse a jugar con eso y descubri algo super interesante.
>
> Hice un programa simple:
>
>   while(1)
>       fork();
>
> Lo que hacia era dejarme pegada la maquina (por razones obias)

Esas razones obvias son que tendr�as miles y miles de procesos, y si el kernel 
era de las series 2.4 o anteriores, el rendimiento se degrada con el aumento 
de procesos, hasta el colapso.

La gracia en los nucleos 2.6 es que el scheduler, el planificador de procesos, 
es en todos sus aspectos de complejidad O(1). Esto significa que su 
rendimiento no empeora al aumentar el n�mero de procesos, es decir, si para 
trabajar con N procesos consume M recursos, para trabajar con 10*N procesos 
consumir�, aproximadamente, 10*M recursos (o con alguna constante aplicada).

El dise�ador del nuevo planificador, Ingo Molnar, dijo que para hacer pruebas 
un d�a en su sistema (un ordenador normal, no un cluster ni nada de eso) hizo 
un programa que creaba 100000 hilos y despu�s los destru�a todos. El programa 
tard� 2 segundos en ejecutarse, y el sistema continuaba OK. :-)

El programa que yo ten�a en mente era m�s acerca del consumo de memoria, de 
forma que cada nuevo proceso reserve memoria con "malloc", pero no la libere, 
y esperar hasta que pete el primer proceso.

> Cuando lo modifique a esto:
>
>   while(1) {
>       fork();
>       sleep(1);
>   }
>
> El cuento cambiaba radicalmente y el sistema me controlaba los procesos
> que se creaban, ademas el sistema se realentizaba pero no se caia,
> puediendo mantener un numero esatico de procesos.
>
> Curioso.

S�, bueno, era de esperar, si esperas un segundo la cosa se ralentiza mucho, 
pero si lo dejas suficiente tiempo (se podr�a calcular, creo que sigue un 
crecimiento exponencial) tambi�n acabar�a colapsando el sistema.

Haplo

Responder a