There are two situations that make sgen slower than boehm. <div><br></div><div>The first is a non-generational workload. If your survivor rate is too high, a generational collector</div><div>can't compete with single space one like boehm.<div>
<br></div><div>The second one is if you have too much of the old generation pointing to young objects causing minor collections</div><div>to scan way too much memory to be profitable.</div><div><br></div><div>The nursery size should usually be a not so small fraction of the total heap you expect. As a good guess you can use</div>
<div>1/10 - 1/20.</div><div><br></div><div>Are you expecting to have a heap of multiple Gigs? Because a 2Gb nursery will need at least 8Gb of major memory.</div><div><br></div><div>About your crash. I just noticed a very silly thing, we have never ever tried sgen with huge nurseries because there's a </div>
<div>128Mb implicit limit due to some internal sizes.</div><div><br></div><div>Jonathan, for such huge heaps, sgen will need the parallel collector to compete with boehm on linux, which is a not</div><div>very mature piece of code both in stability and performance.</div>
<div><br></div><div><br><div class="gmail_quote">On Fri, Aug 31, 2012 at 2:03 PM, Jonathan Shore <span dir="ltr"><<a href="mailto:jonathan.shore@gmail.com" target="_blank">jonathan.shore@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 style="word-wrap:break-word"><font face="Arial" size="4">HI,</font><div><font face="Arial" size="4"><br></font></div>
<div><font face="Arial" size="4">sgen is now working for me (thanks to a subtle bug fix for thread-local-storage by Zoltan).   However, for one application, <b>sgen is 25% slower</b> than the same with the boehm collector.   I am processing some GBs of timeseries data, though only evaluating a window at a time.   As the window reaches some size, older objects in the timeseries are dereferenced.   The object size is 88bytes, but generate many millions across the course of a run.</font></div>
<div><font face="Arial" size="4"><br></font></div><div><font face="Arial" size="4">I suspect that the nursery is too small, so that the objects I want to collect are now in the main heap.    Towards that end I wanted to extend the nursery, and attempted this:</font></div>
<div><font face="Arial" size="4"><br></font></div><div><font face="Arial" size="4">export <span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none">MONO_GC_PARAMS="</span><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none">nursery-size=2g"</span></font></div>
<div><font face="Arial" size="4"><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none"><br>
</span></font></div><div><font face="Arial" size="4"><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none">This causes mono to crash immediately, with:</span></font></div>
<div><font face="Arial" size="4"><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none"><br>
</span></font></div><div><font face="Arial" size="4"><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none"><div>
<span style="white-space:pre-wrap">     </span>* Assertion at sgen-gc.c:1206, condition `idx < section->num_scan_start' not met</div><div><span style="white-space:pre-wrap">       </span>...</div><div><br></div><div>(this is on linux with the latest code on master, roughly 2.11.3+)</div>
<div><br></div><div>I took a look at the code, but requires too much context for me to understand the real cause of the issue.   I am guessing that there is some assumption re: the size of the nursery, block size, etc.</div>
<div><br></div><div>Finally, I am interested in trying the "copying collector" as discussed in this blog entry: </div><div><br></div><div><a href="http://schani.wordpress.com/2011/01/10/sgen-the-major-collectors/" target="_blank">http://schani.wordpress.com/2011/01/10/sgen-the-major-collectors/</a></div>
<div><br></div><div>I'm wondering if will get some performance advantages with this approach, whereas the nursery may be too small for my garbage working set.</div><div><br></div><div>Ideas?</div><div><br></div><div>Thanks</div>
<span class="HOEnZb"><font color="#888888"><div>Jonathan</div></font></span></span></font></div><div><span style="color:rgb(51,51,51);font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(248,248,248);display:inline!important;float:none"><font face="Arial" size="4"><br>
</font></span></div><div style="text-align:left"><font color="#333333" face="Consolas, Courier, 'DejaVu Sans Mono', monospace"><span style="font-size:16px"><br></span></font></div></div><br>_______________________________________________<br>

Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div></div>