[eside-ghost] Crear proceso devorador de memoria :-)
Jon Ander Ortiz
jonbaine en gmail.com
Mie Abr 23 10:57:02 CEST 2008
Buenas!!!!
Voy a comentar un tema curioso, cuanto menos, pero que hay que tener en
cuenta:
El oom killer salta cuando no hay mas memoria disponible, peeeero hay que
tener en cuenta cómo Linux hace la gestion de memoria, depende de como lo
hagamos el oom killer salta en un momento o en otro.
Me explico:
En linux se hace la asignacion de paginas en diferido, es decir, que, por
ejemplo cuando hacemos un fork, no duplica todas las paginas del proceso
padre en el mísmo fork, sino UNICAMENTE cuando escribimos en las mismas.
Esto aplica, porque, linux, permite alocatear mas memoria que la que tenemos
instalada (ram+swap), siempre y cuando no la utilicemos. Debido al
planteamiento optimista que utiliza, no duplica la memoria, sino que nos
asigna la misma memoria a N peticiones y la duplica cuanto la utilizamos.
Esto, implica por ejemplo, que haya diferencias sustanciales entre hacer el
ejemplo de juanval y este otro:
#include "stdlib.h"
#include "stdio.h"
void main()
{
int acum = 0;
void * p;
for(;;)
{
p = malloc(sizeof(char)*1024*1024);
memset(p, 1, 1024*1024);
acum++;
printf("Alocados %i MB de memoria\n",acum);
}
}
En los ejemplo que aparecen en el link de abajo, con un ejemplo como el de
Juanval -> Saltaba el oom 3056 Mb
Si utilizamos la memoria que alocateamos, Saltaba el oom 1081Mb (Tenia 256MB
RAM + 888MB Swap)
Explicado perfectamente aqui, o sino , sheroc, me lo explicó en su día podrá
echar mas luz sobre el asunto:
http://www.linuxdevcenter.com/lpt/a/6808
Un saludo:
Jonan
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20080423/a0311a17/attachment.htm
Más información sobre la lista de distribución eside-ghost