diff options
| author | Qi Wang <interwq@gwu.edu> | 2017-02-02 17:02:05 -0800 |
|---|---|---|
| committer | Qi Wang <interwq@gmail.com> | 2017-03-08 23:19:01 -0800 |
| commit | ec532e2c5c0b25fb7ab09383fe5a274583a90def (patch) | |
| tree | b3306921b534baa43b1bb698d086041226d64d6e /src/stats.c | |
| parent | 8721e19c0414dce0f47a627ff948130d4294b4d7 (diff) | |
| download | platform_external_jemalloc_new-ec532e2c5c0b25fb7ab09383fe5a274583a90def.tar.gz platform_external_jemalloc_new-ec532e2c5c0b25fb7ab09383fe5a274583a90def.tar.bz2 platform_external_jemalloc_new-ec532e2c5c0b25fb7ab09383fe5a274583a90def.zip | |
Implement per-CPU arena.
The new feature, opt.percpu_arena, determines thread-arena association
dynamically based CPU id. Three modes are supported: "percpu", "phycpu"
and disabled.
"percpu" uses the current core id (with help from sched_getcpu())
directly as the arena index, while "phycpu" will assign threads on the
same physical CPU to the same arena. In other words, "percpu" means # of
arenas == # of CPUs, while "phycpu" has # of arenas == 1/2 * (# of
CPUs). Note that no runtime check on whether hyper threading is enabled
is added yet.
When enabled, threads will be migrated between arenas when a CPU change
is detected. In the current design, to reduce overhead from reading CPU
id, each arena tracks the thread accessed most recently. When a new
thread comes in, we will read CPU id and update arena if necessary.
Diffstat (limited to 'src/stats.c')
| -rw-r--r-- | src/stats.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/stats.c b/src/stats.c index ae360e1b..776fb862 100644 --- a/src/stats.c +++ b/src/stats.c @@ -621,6 +621,7 @@ stats_general_print(void (*write_cb)(void *, const char *), void *cbopaque, OPT_WRITE_BOOL(abort, ",") OPT_WRITE_CHAR_P(dss, ",") OPT_WRITE_UNSIGNED(narenas, ",") + OPT_WRITE_CHAR_P(percpu_arena, ",") OPT_WRITE_SSIZE_T_MUTABLE(decay_time, arenas.decay_time, ",") OPT_WRITE_CHAR_P(junk, ",") OPT_WRITE_BOOL(zero, ",") |
