[#81492] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — normalperson@...

Issue #13618 has been reported by normalperson (Eric Wong).

12 messages 2017/06/01

[ruby-core:81736] A question for GC folks [was: Re: [ruby-cvs:66014] normal:r58840 (trunk): lib/net/protocol: clear short-lived read buffer]

From: Eric Wong <normalperson@...>
Date: 2017-06-22 00:06:26 UTC
List: ruby-core #81736
normal@ruby-lang.org wrote:
>   https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=58840
> 
>   Log:
>     lib/net/protocol: clear short-lived read buffer
>     
>     Using a parallel Net::HTTP downloader, this reduced memory usage
>     from around 120MB to 50MB on my 32-bit x86 system.
>     
>     * lib/net/protocol.rb (rbuf_fill): clear temporary buffer

For folks knowledgeable in GC:

This should be a problem which GC escape analysis (EA) would
solve, right?  And if so, what type of overhead is there for
implementing EA?

I know EA is touted for some JVMs; but every system I encounter
running Java apps seems to use truckloads of memory regardless
(not that modern Ruby apps seems much better :<)

Anyways I've sprinkled String#clear calls throughout yahns(*)
last year and it seems to be effective at keeping memory usage
stable for HTTPS reverse proxying the traffic going to
https://public-inbox.org/git/


The above lib/net/protocol.rb change is just me expanding that
to cover more ground outside of my own projects.  Also, the C
source code of Ruby uses rb_str_resize(str, 0) for the same
effect, too.


(*) git clone git://yhbt.net/yahns

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next