[Madrid-pm] Memory leaks

Salvador Fandiño sfandino en yahoo.com
Jue Abr 12 01:03:11 PDT 2007


Joaquin Ferrero <explorer en joaquinferrero.com> escribio

> Me suena haber leído un artículo sobre cómo hacer profiling de la
> memoria consumida, pero no soy capaz de encontrarlo. Todo lo que
> encuentro es profiling de tiempos y alguna referencia a un módulo
> llamado Devel::Memory, pero tampoco se encuentra en CPAN. Recuerdo que
> el artículo dibujaba una gráfica con el espacio ocupado al entrar en una
> subrutina, pero nada, que no sé dónde lo leí.

Uno de mis modulos, Memchmark, permite comparar los consumos de memoria de diversos algoritmos (de la misma manera que Benchmark compara tiempos). Pero solo funciona en Unix porque hace un uso intensivo del fork.

> Desde luego yo estoy acostumbrado a hacer estas burradas y mucho más
> grandes en máquinas con más memoria (2Gb, 3Gb y 4Gb), pero con un
> sistema Linux sé que el sistema me puede ofrecer lo que realmente tiene.
> Y si no tiene, el programa cae.

Que va, Linux se la juega y promete a los procesos memoria que no tiene, y luego, si llega a una situacion en la que no puede cumplir toda lo que ha prometido, los mata a lo bestia, a la kill -9.

Una de las razones por la que esto se hace asi es la gestion "Copy-On-Write" de la memoria que se realiza cuando se mapea en memoria algun fichero, una  libreria o un ejecutable, o cuando se hace un fork. Para garantizar que no va a haber problemas de memoria, Linux tendria que asumir que toda la memoria marcada como COW va a ser modificada en algun momento, pero esto es muy pesimista, lo normal es que no sea asi, y que solo una peque~na parte de la memoria COW se tenga que desdoblar en paginas de memoria diferentes para cada proceso cuando estos escriban sobre las mismas.

Otra de las razones es que existen ciertas aplicaciones que reservan mucha mas memoria de la que luego van a utilizar (me viene a la cabeza CMU CLISP). Y supongo que otra razon sera tambien usar algoritmos mas simples para gestionar la memoria.

- Salva







       
____________________________________________________________________________________
We won't tell. Get more on shows you hate to love 
(and love to hate): Yahoo! TV's Guilty Pleasures list.
http://tv.yahoo.com/collections/265 


Más información sobre la lista de distribución Madrid-pm