On Tue, Apr 03, 2012 at 12:42:08PM +0200, Gerd Stolpmann wrote: > This reminds me of a problem I had with a specific C binding (for mysql), > years ago. That binding allocated custom blocks with badly chosen > parameters used/max (see the docs for caml_alloc_custom in > http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc144). If the > ratio used/max is > 0, these parameters accelerate the GC. If the custom > blocks are frequently allocated, this can have a dramatic effect, even for > quite small used/max ratios. The solution was to change the code, and to > set used=0 and max=1. > > This type of problem would match your observation that the GC works more > and more the longer the program runs, i.e. the more custom blocks have > been allocated. > > The problem basically also exists with bigarrays - with > used=<size_of_bigarary> and max=256M (hardcoded).
I have also observed this with input-output channels (in_channel and out_channel), where used = 1 and max = 1000. A full major GC is performed every time a thousand files are opened, which can result on a significant overhead when you open lot of files and the heap is large. -- Jerome -- Caml-list mailing list. Subscription management and archives: https://sympa-roc.inria.fr/wws/info/caml-list Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs