caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "John F. Carr" <jfc@MIT.EDU>
To: Raoul Duke <raould@gmail.com>
Cc: OCaml <caml-list@inria.fr>
Subject: Re: [Caml-list] concurrent gc?
Date: Wed, 23 Jul 2014 20:44:02 -0400	[thread overview]
Message-ID: <21456.22226.875151.670593@gargle.gargle.HOWL> (raw)
In-Reply-To: <CAJ7XQb5yJT2Ws0derKrgkR5OkHPX_y8v=8ySatmNZeoEMpMmQA@mail.gmail.com>


 > I should have noted that my main concern is with pauses, not with
 > overall speedup. In other words: in interactive apps, pauses are
 > eeeeeevil.
 > 
 > > For technical reasons, offloading major collections in OCaml is easier
 > > than offloading minor collections, so the potential benefit is less.
 > 
 > I am guessing you mean that major collections just don't happen that
 > often, at least if people write their code in a non-pathalogical
 > fashion? :)

OCaml's runtime is designed around the assumption that access to the
minor heap is fast and the minor heap is only emptied when the program
is stopped.  More generally, no object moves except when the program
is stopped.  Every minor collection moves objects, while most major
collections do not.  The runtime can even be told not to move objects
during a major collection.

So minor collections have to happen while the main program is stopped,
or you have a large rather than a small change to the compiler-runtime
interface.

Full major collections are infrequent.  The runtime is designed to do
some amount of major collection work after each minor GC.  For
example, it might mark 10000 objects before restarting the program,
even though there are a million objects in the heap.  It is this
"slice" of work that could be overlapped with execution of the main
program.

Before writing a concurrent garbage collector, try

1. Turn down the amount of work done at each major collection slice.

2. Reduce the size of the minor heap.

See the Gc module and OCAMLRUNPARAM environment variable.


  reply	other threads:[~2014-07-24  0:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-23 23:34 Raoul Duke
2014-07-24  0:05 ` John F. Carr
2014-07-24  0:08   ` Raoul Duke
2014-07-24  0:44     ` John F. Carr [this message]
2014-07-24  0:45       ` Raoul Duke
2014-07-24 15:24         ` Shayne Fletcher
2014-07-24  3:45     ` Malcolm Matalka
2014-07-24  5:58       ` Anthony Tavener
2014-07-28 11:20         ` Goswin von Brederlow
2014-07-24  6:58   ` Nicolas Boulay
2014-07-24  7:38     ` Malcolm Matalka
2014-07-24 15:36     ` Fabrice Le Fessant
2014-07-24 15:39       ` Malcolm Matalka
2014-07-24 16:44         ` Fabrice Le Fessant
2014-07-25  7:18           ` Nicolas Boulay
2014-07-28 11:26             ` Goswin von Brederlow
2014-07-28 11:24           ` Goswin von Brederlow
2014-07-28 17:34             ` Raoul Duke
2014-07-29  4:25               ` Gabriel Scherer
2014-07-29  4:49                 ` ygrek
2014-07-29 10:01                   ` Goswin von Brederlow
2014-07-29 10:29                     ` ygrek
2014-07-31 11:10                       ` Goswin von Brederlow
2014-07-29 17:23                 ` Raoul Duke
2014-12-19  0:58                   ` Jon Harrop
2014-07-31 14:26         ` Richard W.M. Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=21456.22226.875151.670593@gargle.gargle.HOWL \
    --to=jfc@mit.edu \
    --cc=caml-list@inria.fr \
    --cc=raould@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).