<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 31, 2014 at 10:51 AM, Chandru <span dir="ltr"><<a href="mailto:chandrashekhar.mullaparthi@gmail.com" target="_blank">chandrashekhar.mullaparthi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you Lukas.<br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On 31 October 2014 09:37, Lukas Larsson <span dir="ltr"><<a href="mailto:lukas@erlang.org" target="_blank">lukas@erlang.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Hello,</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote"><span>On Fri, Oct 31, 2014 at 10:20 AM, Chandrashekhar Mullaparthi <span dir="ltr"><<a href="mailto:chandrashekhar.mullaparthi@gmail.com" target="_blank">chandrashekhar.mullaparthi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-GB" link="#0563C1" vlink="#954F72"><div><p class="MsoNormal"> <br></p><p class="MsoNormal"><u></u></p><p class="MsoNormal">I have a question about beam’s GC implementation. When an erlang process is being GCed, is the processing required to do the GC taken out of the process’s 2000 reduction quota, or is it done after a process has been scheduled out?<u></u><u></u></p><p class="MsoNormal"><u></u> </p></div></div></blockquote><div><br></div></span><div>The GC work is taken out of the process' reductions. The GC is never triggered when it is scheduled out, but it can be triggered before being scheduled in, in which case the newly allotted reductions will be reduced by the GC work.</div></div></div></div></blockquote><div><br></div></div></div><div>So what happens if the process has a large heap? Can the GC end up taking more time than to execute 2000 reductions? Or is it somehow time bounded? If it is not time bounded, it explains a lot of the problems I'm seeing on a system.</div></div></div></div></blockquote><div><br></div><div>The current GC is not incremental, so once it has started doing work it cannot be interrupted. This means that if a process has a large heap it will block all other execution on that scheduler for the GC duration. </div></div></div></div>