From: naruse@... Date: 2018-06-08T16:29:03+00:00 Subject: [ruby-core:87459] [Ruby trunk Feature#14767] [PATCH] gc.c: use monotonic counters for objspace_malloc_increase 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: