[ruby-core:87459] [Ruby trunk Feature#14767] [PATCH] gc.c: use monotonic counters for objspace_malloc_increase

From: naruse@...
Date: 2018-06-08 16:29:03 UTC
List: ruby-core #87459
Issue #14767 has been updated by naruse (Yui NARUSE).


I once get a thought, instead of counting memory Ruby itself bundling jemalloc and use jemalloc's memory profiler.
jemalloc counting allocated bytes inside it.
If Ruby accesses it, Ruby can avoid to execute extra atomic instructions.

----------------------------------------
Feature #14767: [PATCH] gc.c: use monotonic counters for objspace_malloc_increase
https://bugs.ruby-lang.org/issues/14767#change-72449

* Author: normalperson (Eric Wong)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
----------------------------------------
gc.c: use monotonic counters for objspace_malloc_increase

atomic_sub_nounderflow is expensive and objspace_malloc_increase
was showing up near the top of some `perf` profiles.  The new
implementation allows the compiler to inline and eliminate
some branches from objspace_malloc_increase.

This consistently improves bm_so_count_words benchmark by
around 10% on my hardware.

name    built
so_count_words  1.107


We started this discussion back in [ruby-core:61508]
https://public-inbox.org/ruby-core/5323FE11.3000908@atdot.net/
I may revisit non-atomic counters another day, but I think
this patch is good for now since I haven't found a downside
(running full benchmarks, will take a while)


---Files--------------------------------
0001-gc.c-use-monotonic-counters-for-objspace_malloc_incr.patch (8.25 KB)


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

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