Ocaml 3.12.0., Lwt 2.3.1 On Apr 20, 2012 7:12 PM, "SerP" <serp...@gmail.com> wrote:
> Hi! > We have developped a daemon on ocaml using the lwt lib(libev). It > processes about 800 requests per second, but it increases to 2 Gb in memory > for a hour of work. We have studied the problem for a long time, using > mtrace, mallinfo and other tools, and we tried to change GC params. We > found out that setting up GC.minor_heap_size=10Mb а > major_heap_increment=2Мb will make the daemon grow slower. mallinfо shows > that the memory (1,5G) is allocated using mmap (blkhd field in mallinfo > struct) and arena size - about 20M In this case, first calls of GC.compact > compress the daemon to 200 Mb (live -110Mb) , and mallinfo show decreasing > of total size of memory allocated by mmap. The daemon keeps growing, but it > allocates the memory to arena (using brk), and calls of GC.compact leads to > decrease of heap_bytes to 200M, but arena size (1.5 Gb) does not decrease, > just doing less uordblks and more fordblks (fileds I.e., after first calls > of GC.compact, the daemon starts using brk much more than mmap, and cant > memory given back to the system. > > If Gc.allocation_policy is first fit, memory usage is stable, and it's > grow very little, but worked very slowly. > > Any suggestions are very welcome. Thanks > -- 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