<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Making Ruby’s garbage collector copy-on-write friendly, part 6 (final?)</title>
	<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/</link>
	<description>Ecchi nanowa ikenai to omoimasu</description>
	<pubDate>Sat, 05 Jul 2008 18:34:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Crystal</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-8628</link>
		<dc:creator>Crystal</dc:creator>
		<pubDate>Thu, 17 Apr 2008 00:35:47 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-8628</guid>
		<description>Wow these are very big savings, thanks again.</description>
		<content:encoded><![CDATA[<p>Wow these are very big savings, thanks again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hongli</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7947</link>
		<dc:creator>Hongli</dc:creator>
		<pubDate>Thu, 20 Mar 2008 10:07:04 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7947</guid>
		<description>No, the memory savings are caused by copy-on-write semantics.</description>
		<content:encoded><![CDATA[<p>No, the memory savings are caused by copy-on-write semantics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: roger</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7944</link>
		<dc:creator>roger</dc:creator>
		<pubDate>Thu, 20 Mar 2008 05:01:47 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7944</guid>
		<description>I assume most of the memory-savings is because of using fixed-length "heap blocks"?</description>
		<content:encoded><![CDATA[<p>I assume most of the memory-savings is because of using fixed-length &#8220;heap blocks&#8221;?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 赖洪礼的 blog &#187; Making Ruby’s garbage collector copy-on-write friendly, part 7</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7574</link>
		<dc:creator>赖洪礼的 blog &#187; Making Ruby’s garbage collector copy-on-write friendly, part 7</dc:creator>
		<pubDate>Mon, 14 Jan 2008 12:50:14 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7574</guid>
		<description>[...] turns out that part 6 was not final. I&#8217;ve been working on the garbage collector again. These are the [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] turns out that part 6 was not final. I&#8217;ve been working on the garbage collector again. These are the [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lloyd hilaiel</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7010</link>
		<dc:creator>lloyd hilaiel</dc:creator>
		<pubDate>Fri, 26 Oct 2007 20:30:23 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-7010</guid>
		<description>hi.

I'm embarked on a similar mission.  make ruby use less memory without going too much slower.  I've got a set of very simple test cases, and ran then on 1.8.6 after applying your patch.  it's interesting to note that you've got about a 8% performance hit in combination with the 33% memory usage gain according to my toy tests:

vanilla 1.8.6:
running cases/growarray.rb
 time 1.355438
running cases/plist.rb
 time 3.693722
running cases/shrinkarray.rb
 time 1.351735

cowfriendly 1.8.6:
running cases/growarray.rb
 time 1.485687
running cases/plist.rb
 time 4.006008
running cases/shrinkarray.rb
 time 1.48557

(/ 3.693722 4.006008)
(/ 1.351735 1.48557)

~8% performance penalty.

I'd imagine for a lot of folks this is a tradeoff they're willing to make (8% is a lot better than swapping and paging :), but thought it might be interesting to you anyways.</description>
		<content:encoded><![CDATA[<p>hi.</p>
<p>I&#8217;m embarked on a similar mission.  make ruby use less memory without going too much slower.  I&#8217;ve got a set of very simple test cases, and ran then on 1.8.6 after applying your patch.  it&#8217;s interesting to note that you&#8217;ve got about a 8% performance hit in combination with the 33% memory usage gain according to my toy tests:</p>
<p>vanilla 1.8.6:<br />
running cases/growarray.rb<br />
 time 1.355438<br />
running cases/plist.rb<br />
 time 3.693722<br />
running cases/shrinkarray.rb<br />
 time 1.351735</p>
<p>cowfriendly 1.8.6:<br />
running cases/growarray.rb<br />
 time 1.485687<br />
running cases/plist.rb<br />
 time 4.006008<br />
running cases/shrinkarray.rb<br />
 time 1.48557</p>
<p>(/ 3.693722 4.006008)<br />
(/ 1.351735 1.48557)</p>
<p>~8% performance penalty.</p>
<p>I&#8217;d imagine for a lot of folks this is a tradeoff they&#8217;re willing to make (8% is a lot better than swapping and paging :), but thought it might be interesting to you anyways.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roger Pack</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6921</link>
		<dc:creator>Roger Pack</dc:creator>
		<pubDate>Mon, 22 Oct 2007 21:11:59 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6921</guid>
		<description>You should submit this to the mongrel guys :)</description>
		<content:encoded><![CDATA[<p>You should submit this to the mongrel guys <img src='http://izumi.plan99.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6808</link>
		<dc:creator>Jeremy</dc:creator>
		<pubDate>Mon, 15 Oct 2007 17:03:35 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6808</guid>
		<description>Actually, upon further review, it doesn't. They don't call start. I had a check inside the module, which was outputting, but start never gets called. I'll just run with the standard mongrel for now, and change up "swiftiply_mongrel_rails" to use your stuff instead later.</description>
		<content:encoded><![CDATA[<p>Actually, upon further review, it doesn&#8217;t. They don&#8217;t call start. I had a check inside the module, which was outputting, but start never gets called. I&#8217;ll just run with the standard mongrel for now, and change up &#8220;swiftiply_mongrel_rails&#8221; to use your stuff instead later.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6807</link>
		<dc:creator>Jeremy</dc:creator>
		<pubDate>Mon, 15 Oct 2007 16:51:34 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6807</guid>
		<description>Already did that. :) - It is.</description>
		<content:encoded><![CDATA[<p>Already did that. <img src='http://izumi.plan99.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> - It is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hongli</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6806</link>
		<dc:creator>Hongli</dc:creator>
		<pubDate>Mon, 15 Oct 2007 16:27:57 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6806</guid>
		<description>I'm not sure whether mongrel_light_cluster is compatible with swiftiply_mongrel_rails. You can check whether mongrel_light_cluster is actually active by checking this:
&lt;pre lang="ruby"&gt;
module Cluster
  module ExecBase
    if @@light_cluster_initialized
        puts "mongrel_light_cluster is active"
    end
  end
end
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure whether mongrel_light_cluster is compatible with swiftiply_mongrel_rails. You can check whether mongrel_light_cluster is actually active by checking this:</p>
<pre lang="ruby">
module Cluster
  module ExecBase
    if @@light_cluster_initialized
        puts "mongrel_light_cluster is active"
    end
  end
end
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy</title>
		<link>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6805</link>
		<dc:creator>Jeremy</dc:creator>
		<pubDate>Mon, 15 Oct 2007 15:45:55 +0000</pubDate>
		<guid>http://izumi.plan99.net/blog/index.php/2007/10/15/making-ruby%e2%80%99s-garbage-collector-copy-on-write-friendly-part-6-final/#comment-6805</guid>
		<description>I am testing this now with two Rails apps, and swiftiply_mongrel_rails. Startup is 17 megs of RAM, fully loaded is 21-22 megs.</description>
		<content:encoded><![CDATA[<p>I am testing this now with two Rails apps, and swiftiply_mongrel_rails. Startup is 17 megs of RAM, fully loaded is 21-22 megs.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
