[#64517] Fw: Re: Ruby and Rails to become Apache Incubator Project — Tetsuya Kitahata <kitahata@99.alumni.u-tokyo.ac.jp>

What do you think? >> Ruby developers

13 messages 2014/08/23

[#64615] [ruby-trunk - Feature #10181] [Open] New method File.openat() — oss-ruby-lang@...

Issue #10181 has been reported by Technorama Ltd..

10 messages 2014/08/28
[#64616] Re: [ruby-trunk - Feature #10181] [Open] New method File.openat() — Eric Wong <normalperson@...> 2014/08/28

I like this feature.

[#64671] Fwd: [ruby-changes:35240] normal:r47322 (trunk): symbol.c (rb_sym2id): do not return garbage object — SASADA Koichi <ko1@...>

Why this fix solve your problem?

9 messages 2014/08/30
[#64672] Re: Fwd: [ruby-changes:35240] normal:r47322 (trunk): symbol.c (rb_sym2id): do not return garbage object — SASADA Koichi <ko1@...> 2014/08/30

(2014/08/30 8:50), SASADA Koichi wrote:

[ruby-core:64482] [ruby-trunk - Feature #9113] Ship Ruby for Linux with jemalloc out-of-the-box

From: normalperson@...
Date: 2014-08-20 19:48:29 UTC
List: ruby-core #64482
Issue #9113 has been updated by Eric Wong.


 SASADA Koichi <ko1@atdot.net> wrote:
 > Recently I'm working around this topic.
 > 
 > (1) Life-time oriented, similar to Copying GC
 > (2) CoW frindly (read only) memories
 > 
 > More detail about (2):
 > The following figure shows the stacked memory usage (snapshot) collected
 > by valgrind/massif, on discorse benchmark by @sam's help.
 > http://www.atdot.net/fp_store/f.69bk1n/file.copipa-temp-image.png
 > 
 > Interestingly, 50MB is consumed by iseq (iseq.c, compile.c). Most of
 > data are read only, so it can be more CoW frindly. Now, we mixes
 > read-only data and r/w data such as inline cahce.
 > 
 > There are several ideas.  And I belive it is good topic to consider for
 > Ruby 2.2.
 
 ko1: any progress on this front?  I may use dlmalloc mspace API[1] to
 make a special CoW-friendly heap for read-only parts of the iseq
 structure (and probably other read-only data such as frozen pathnames).
 
 And continue using regular malloc (e.g. jemalloc) for r/w heap.
 
 [1] ftp://gee.cs.oswego.edu/pub/misc/malloc.c

----------------------------------------
Feature #9113: Ship Ruby for Linux with jemalloc out-of-the-box
https://bugs.ruby-lang.org/issues/9113#change-48429

* Author: Sam Saffron
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: build
* Target version: 
----------------------------------------
libc's malloc is a problem, it fragments badly meaning forks share less memory and is slow compared to tcmalloc or jemalloc. 

both jemalloc and tcmalloc are heavily battle tested and stable. 

2 years ago redis picked up the jemalloc dependency see: http://oldblog.antirez.com/post/everything-about-redis-24.html 

To quote antirez:
``
But an allocator is a serious thing. Since we introduced the specially encoded data types Redis started suffering from fragmentation. We tried different things to fix the problem, but basically the Linux default allocator in glibc sucks really, really hard. 
``

--- 

I recently benched Discourse with tcmalloc / jemalloc and default and noticed 2 very important thing: 

median request time reduce by up to 10% (under both)
PSS (proportional share size) is reduced by 10% under jemalloc and 8% under tcmalloc.

We can always use LD_PRELOAD to yank these in, but my concern is that standard distributions are using a far from optimal memory allocator. It would be awesome if the build, out-of-the-box, just checked if it was on Linux  (eg: https://github.com/antirez/redis/blob/unstable/src/Makefile#L30-L34 ) and then used jemalloc instead. 

---Files--------------------------------
0001-configure.in-add-with-jemalloc-option.patch (1.29 KB)


-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next