aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Goldblatt <davidgoldblatt@fb.com>2018-03-02 13:12:47 -0800
committerDavid Goldblatt <davidtgoldblatt@gmail.com>2018-03-09 11:47:17 -0800
commit9e1846b0041e29a331ecf76e9b23ddb730bc352f (patch)
tree91740e6b8ab4b8caa4867424ff07b419db698e9c /src
parent8076b28721e16d14a8a81bb6c17fba804812e110 (diff)
downloadplatform_external_jemalloc_new-9e1846b0041e29a331ecf76e9b23ddb730bc352f.tar.gz
platform_external_jemalloc_new-9e1846b0041e29a331ecf76e9b23ddb730bc352f.tar.bz2
platform_external_jemalloc_new-9e1846b0041e29a331ecf76e9b23ddb730bc352f.zip
Stats printing: move non-mutex arena stats to the emitter.
Another step in the conversion process. The mutex is a little different, because we we want to emit it as an array.
Diffstat (limited to 'src')
-rw-r--r--src/stats.c97
1 files changed, 43 insertions, 54 deletions
diff --git a/src/stats.c b/src/stats.c
index 709ce2d5..5e5cc0c8 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -965,39 +965,40 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed,
background_thread_run_interval = 0;
}
- if (json) {
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\"stats\": {\n");
-
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"allocated\": %zu,\n", allocated);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"active\": %zu,\n", active);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"metadata\": %zu,\n", metadata);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"metadata_thp\": %zu,\n", metadata_thp);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"resident\": %zu,\n", resident);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"mapped\": %zu,\n", mapped);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"retained\": %zu,\n", retained);
-
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\"background_thread\": {\n");
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\t\"num_threads\": %zu,\n", num_background_threads);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\t\"num_runs\": %"FMTu64",\n",
- background_thread_num_runs);
- malloc_cprintf(write_cb, cbopaque,
- "\t\t\t\t\"run_interval\": %"FMTu64"\n",
- background_thread_run_interval);
- malloc_cprintf(write_cb, cbopaque, "\t\t\t}%s\n",
- mutex ? "," : "");
+ /* Generic global stats. */
+ emitter_json_dict_begin(emitter, "stats");
+ emitter_json_kv(emitter, "allocated", emitter_type_size, &allocated);
+ emitter_json_kv(emitter, "active", emitter_type_size, &active);
+ emitter_json_kv(emitter, "metadata", emitter_type_size, &metadata);
+ emitter_json_kv(emitter, "metadata_thp", emitter_type_size,
+ &metadata_thp);
+ emitter_json_kv(emitter, "resident", emitter_type_size, &resident);
+ emitter_json_kv(emitter, "mapped", emitter_type_size, &mapped);
+ emitter_json_kv(emitter, "retained", emitter_type_size, &retained);
+
+ emitter_table_printf(emitter, "Allocated: %zu, active: %zu, "
+ "metadata: %zu (n_thp %zu), resident: %zu, mapped: %zu, "
+ "retained: %zu\n", allocated, active, metadata, metadata_thp,
+ resident, mapped, retained);
+
+ /* Background thread stats. */
+ emitter_json_dict_begin(emitter, "background_thread");
+ emitter_json_kv(emitter, "num_threads", emitter_type_size,
+ &num_background_threads);
+ emitter_json_kv(emitter, "num_runs", emitter_type_uint64,
+ &background_thread_num_runs);
+ emitter_json_kv(emitter, "run_interval", emitter_type_uint64,
+ &background_thread_run_interval);
+ emitter_json_dict_end(emitter); /* Close "background_thread". */
+
+ emitter_table_printf(emitter, "Background threads: %zu, "
+ "num_runs: %"FMTu64", run_interval: %"FMTu64" ns\n",
+ num_background_threads, background_thread_num_runs,
+ background_thread_run_interval);
+ if (json) {
if (mutex) {
+ malloc_cprintf(write_cb, cbopaque, ",\n");
malloc_cprintf(write_cb, cbopaque,
"\t\t\t\"mutexes\": {\n");
mutex_prof_global_ind_t i;
@@ -1007,25 +1008,9 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed,
"\t\t\t\t",
i == mutex_prof_num_global_mutexes - 1);
}
- malloc_cprintf(write_cb, cbopaque, "\t\t\t}\n");
+ malloc_cprintf(write_cb, cbopaque, "\t\t\t}");
}
- malloc_cprintf(write_cb, cbopaque,
- "\t\t}%s\n", (merged || unmerged || destroyed) ? "," : "");
} else {
- malloc_cprintf(write_cb, cbopaque,
- "Allocated: %zu, active: %zu, metadata: %zu (n_thp %zu),"
- " resident: %zu, mapped: %zu, retained: %zu\n",
- allocated, active, metadata, metadata_thp, resident, mapped,
- retained);
-
- if (have_background_thread && num_background_threads > 0) {
- malloc_cprintf(write_cb, cbopaque,
- "Background threads: %zu, num_runs: %"FMTu64", "
- "run_interval: %"FMTu64" ns\n",
- num_background_threads,
- background_thread_num_runs,
- background_thread_run_interval);
- }
if (mutex) {
mutex_prof_global_ind_t i;
for (i = 0; i < mutex_prof_num_global_mutexes; i++) {
@@ -1036,6 +1021,16 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed,
}
}
+ emitter_json_dict_end(emitter); /* Close "stats". */
+
+ if (json) {
+ if (merged || unmerged || destroyed) {
+ malloc_cprintf(write_cb, cbopaque, ",\n");
+ } else {
+ malloc_cprintf(write_cb, cbopaque, "\n");
+ }
+ }
+
if (merged || destroyed || unmerged) {
unsigned narenas;
@@ -1200,12 +1195,6 @@ stats_print(void (*write_cb)(void *, const char *), void *cbopaque,
if (general) {
stats_general_print(&emitter);
-
- if (json) {
- if (config_stats) {
- malloc_cprintf(write_cb, cbopaque, ",");
- }
- }
}
if (json) {
malloc_cprintf(write_cb, cbopaque, "\n");