Relocate a few prof utilities to the right modules
This commit is contained in:
parent
4736fb4fc9
commit
d128efcb6a
@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
#include "jemalloc/internal/mutex.h"
|
#include "jemalloc/internal/mutex.h"
|
||||||
|
|
||||||
|
extern malloc_mutex_t bt2gctx_mtx;
|
||||||
|
extern malloc_mutex_t tdatas_mtx;
|
||||||
|
extern malloc_mutex_t prof_dump_mtx;
|
||||||
|
|
||||||
extern malloc_mutex_t *gctx_locks;
|
extern malloc_mutex_t *gctx_locks;
|
||||||
extern malloc_mutex_t *tdata_locks;
|
extern malloc_mutex_t *tdata_locks;
|
||||||
|
|
||||||
@ -19,6 +23,7 @@ prof_tdata_t * prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid,
|
|||||||
void prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata);
|
void prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata);
|
||||||
void bt_init(prof_bt_t *bt, void **vec);
|
void bt_init(prof_bt_t *bt, void **vec);
|
||||||
void prof_backtrace(tsd_t *tsd, prof_bt_t *bt);
|
void prof_backtrace(tsd_t *tsd, prof_bt_t *bt);
|
||||||
|
void prof_reset(tsd_t *tsd, size_t lg_sample);
|
||||||
void prof_tctx_try_destroy(tsd_t *tsd, prof_tctx_t *tctx);
|
void prof_tctx_try_destroy(tsd_t *tsd, prof_tctx_t *tctx);
|
||||||
|
|
||||||
/* Used in unit tests. */
|
/* Used in unit tests. */
|
||||||
|
@ -3,10 +3,6 @@
|
|||||||
|
|
||||||
#include "jemalloc/internal/mutex.h"
|
#include "jemalloc/internal/mutex.h"
|
||||||
|
|
||||||
extern malloc_mutex_t bt2gctx_mtx;
|
|
||||||
extern malloc_mutex_t tdatas_mtx;
|
|
||||||
extern malloc_mutex_t prof_dump_mtx;
|
|
||||||
|
|
||||||
extern bool opt_prof;
|
extern bool opt_prof;
|
||||||
extern bool opt_prof_active;
|
extern bool opt_prof_active;
|
||||||
extern bool opt_prof_thread_active_init;
|
extern bool opt_prof_thread_active_init;
|
||||||
@ -26,7 +22,6 @@ extern char opt_prof_prefix[
|
|||||||
|
|
||||||
/* For recording recent allocations */
|
/* For recording recent allocations */
|
||||||
extern ssize_t opt_prof_recent_alloc_max;
|
extern ssize_t opt_prof_recent_alloc_max;
|
||||||
extern malloc_mutex_t prof_recent_alloc_mtx;
|
|
||||||
|
|
||||||
/* Whether to use thread name provided by the system or by mallctl. */
|
/* Whether to use thread name provided by the system or by mallctl. */
|
||||||
extern bool opt_prof_sys_thread_name;
|
extern bool opt_prof_sys_thread_name;
|
||||||
@ -57,12 +52,10 @@ void prof_malloc_sample_object(tsd_t *tsd, const void *ptr, size_t size,
|
|||||||
size_t usize, prof_tctx_t *tctx);
|
size_t usize, prof_tctx_t *tctx);
|
||||||
void prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_info_t *prof_info);
|
void prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_info_t *prof_info);
|
||||||
prof_tctx_t *prof_tctx_create(tsd_t *tsd);
|
prof_tctx_t *prof_tctx_create(tsd_t *tsd);
|
||||||
int prof_getpid(void);
|
|
||||||
void prof_idump(tsdn_t *tsdn);
|
void prof_idump(tsdn_t *tsdn);
|
||||||
bool prof_mdump(tsd_t *tsd, const char *filename);
|
bool prof_mdump(tsd_t *tsd, const char *filename);
|
||||||
void prof_gdump(tsdn_t *tsdn);
|
void prof_gdump(tsdn_t *tsdn);
|
||||||
|
|
||||||
void prof_reset(tsd_t *tsd, size_t lg_sample);
|
|
||||||
void prof_tdata_cleanup(tsd_t *tsd);
|
void prof_tdata_cleanup(tsd_t *tsd);
|
||||||
bool prof_active_get(tsdn_t *tsdn);
|
bool prof_active_get(tsdn_t *tsdn);
|
||||||
bool prof_active_set(tsdn_t *tsdn, bool active);
|
bool prof_active_set(tsdn_t *tsdn, bool active);
|
||||||
@ -87,11 +80,4 @@ uint64_t prof_sample_new_event_wait(tsd_t *tsd);
|
|||||||
uint64_t prof_sample_postponed_event_wait(tsd_t *tsd);
|
uint64_t prof_sample_postponed_event_wait(tsd_t *tsd);
|
||||||
void prof_sample_event_handler(tsd_t *tsd, uint64_t elapsed);
|
void prof_sample_event_handler(tsd_t *tsd, uint64_t elapsed);
|
||||||
|
|
||||||
bool prof_log_start(tsdn_t *tsdn, const char *filename);
|
|
||||||
bool prof_log_stop(tsdn_t *tsdn);
|
|
||||||
|
|
||||||
ssize_t prof_recent_alloc_max_ctl_read();
|
|
||||||
ssize_t prof_recent_alloc_max_ctl_write(tsd_t *tsd, ssize_t max);
|
|
||||||
void prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque);
|
|
||||||
|
|
||||||
#endif /* JEMALLOC_INTERNAL_PROF_EXTERNS_H */
|
#endif /* JEMALLOC_INTERNAL_PROF_EXTERNS_H */
|
||||||
|
@ -16,4 +16,7 @@ bool prof_log_is_logging(void);
|
|||||||
bool prof_log_rep_check(void);
|
bool prof_log_rep_check(void);
|
||||||
void prof_log_dummy_set(bool new_value);
|
void prof_log_dummy_set(bool new_value);
|
||||||
|
|
||||||
|
bool prof_log_start(tsdn_t *tsdn, const char *filename);
|
||||||
|
bool prof_log_stop(tsdn_t *tsdn);
|
||||||
|
|
||||||
#endif /* JEMALLOC_INTERNAL_PROF_LOG_H */
|
#endif /* JEMALLOC_INTERNAL_PROF_LOG_H */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef JEMALLOC_INTERNAL_PROF_RECENT_H
|
#ifndef JEMALLOC_INTERNAL_PROF_RECENT_H
|
||||||
#define JEMALLOC_INTERNAL_PROF_RECENT_H
|
#define JEMALLOC_INTERNAL_PROF_RECENT_H
|
||||||
|
|
||||||
|
extern malloc_mutex_t prof_recent_alloc_mtx;
|
||||||
extern malloc_mutex_t prof_recent_dump_mtx;
|
extern malloc_mutex_t prof_recent_dump_mtx;
|
||||||
|
|
||||||
bool prof_recent_alloc_prepare(tsd_t *tsd, prof_tctx_t *tctx);
|
bool prof_recent_alloc_prepare(tsd_t *tsd, prof_tctx_t *tctx);
|
||||||
@ -15,4 +16,8 @@ extern prof_recent_list_t prof_recent_alloc_list;
|
|||||||
edata_t *prof_recent_alloc_edata_get_no_lock_test(const prof_recent_t *node);
|
edata_t *prof_recent_alloc_edata_get_no_lock_test(const prof_recent_t *node);
|
||||||
prof_recent_t *edata_prof_recent_alloc_get_no_lock_test(const edata_t *edata);
|
prof_recent_t *edata_prof_recent_alloc_get_no_lock_test(const edata_t *edata);
|
||||||
|
|
||||||
|
ssize_t prof_recent_alloc_max_ctl_read();
|
||||||
|
ssize_t prof_recent_alloc_max_ctl_write(tsd_t *tsd, ssize_t max);
|
||||||
|
void prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque);
|
||||||
|
|
||||||
#endif /* JEMALLOC_INTERNAL_PROF_RECENT_H */
|
#endif /* JEMALLOC_INTERNAL_PROF_RECENT_H */
|
||||||
|
@ -5,6 +5,7 @@ extern malloc_mutex_t prof_dump_filename_mtx;
|
|||||||
extern base_t *prof_base;
|
extern base_t *prof_base;
|
||||||
|
|
||||||
void prof_sys_thread_name_fetch(tsd_t *tsd);
|
void prof_sys_thread_name_fetch(tsd_t *tsd);
|
||||||
|
int prof_getpid(void);
|
||||||
void prof_get_default_filename(tsdn_t *tsdn, char *filename, uint64_t ind);
|
void prof_get_default_filename(tsdn_t *tsdn, char *filename, uint64_t ind);
|
||||||
bool prof_dump_prefix_set(tsdn_t *tsdn, const char *prefix);
|
bool prof_dump_prefix_set(tsdn_t *tsdn, const char *prefix);
|
||||||
void prof_fdump_impl(tsd_t *tsd);
|
void prof_fdump_impl(tsd_t *tsd);
|
||||||
|
@ -9,6 +9,9 @@
|
|||||||
#include "jemalloc/internal/mutex.h"
|
#include "jemalloc/internal/mutex.h"
|
||||||
#include "jemalloc/internal/nstime.h"
|
#include "jemalloc/internal/nstime.h"
|
||||||
#include "jemalloc/internal/peak_event.h"
|
#include "jemalloc/internal/peak_event.h"
|
||||||
|
#include "jemalloc/internal/prof_data.h"
|
||||||
|
#include "jemalloc/internal/prof_log.h"
|
||||||
|
#include "jemalloc/internal/prof_recent.h"
|
||||||
#include "jemalloc/internal/prof_sys.h"
|
#include "jemalloc/internal/prof_sys.h"
|
||||||
#include "jemalloc/internal/sc.h"
|
#include "jemalloc/internal/sc.h"
|
||||||
#include "jemalloc/internal/util.h"
|
#include "jemalloc/internal/util.h"
|
||||||
|
16
src/prof.c
16
src/prof.c
@ -78,16 +78,9 @@ uint64_t prof_interval = 0;
|
|||||||
|
|
||||||
size_t lg_prof_sample;
|
size_t lg_prof_sample;
|
||||||
|
|
||||||
/* Non static to enable profiling. */
|
|
||||||
malloc_mutex_t bt2gctx_mtx;
|
|
||||||
|
|
||||||
malloc_mutex_t tdatas_mtx;
|
|
||||||
|
|
||||||
static uint64_t next_thr_uid;
|
static uint64_t next_thr_uid;
|
||||||
static malloc_mutex_t next_thr_uid_mtx;
|
static malloc_mutex_t next_thr_uid_mtx;
|
||||||
|
|
||||||
malloc_mutex_t prof_dump_mtx;
|
|
||||||
|
|
||||||
/* Do not dump any profiles until bootstrapping is complete. */
|
/* Do not dump any profiles until bootstrapping is complete. */
|
||||||
bool prof_booted = false;
|
bool prof_booted = false;
|
||||||
|
|
||||||
@ -473,15 +466,6 @@ prof_sample_event_handler(tsd_t *tsd, uint64_t elapsed) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
prof_getpid(void) {
|
|
||||||
#ifdef _WIN32
|
|
||||||
return GetCurrentProcessId();
|
|
||||||
#else
|
|
||||||
return getpid();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prof_fdump(void) {
|
prof_fdump(void) {
|
||||||
tsd_t *tsd;
|
tsd_t *tsd;
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
malloc_mutex_t bt2gctx_mtx;
|
||||||
|
malloc_mutex_t tdatas_mtx;
|
||||||
|
malloc_mutex_t prof_dump_mtx;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Table of mutexes that are shared among gctx's. These are leaf locks, so
|
* Table of mutexes that are shared among gctx's. These are leaf locks, so
|
||||||
* there is no problem with using them for more than one gctx at the same time.
|
* there is no problem with using them for more than one gctx at the same time.
|
||||||
|
@ -61,6 +61,15 @@ prof_sys_thread_name_fetch(tsd_t *tsd) {
|
|||||||
#undef THREAD_NAME_MAX_LEN
|
#undef THREAD_NAME_MAX_LEN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
prof_getpid(void) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
return GetCurrentProcessId();
|
||||||
|
#else
|
||||||
|
return getpid();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prof_dump_check_possible_error(bool err_cond, const char *format, ...) {
|
prof_dump_check_possible_error(bool err_cond, const char *format, ...) {
|
||||||
assert(!prof_dump_error);
|
assert(!prof_dump_error);
|
||||||
|
Loading…
Reference in New Issue
Block a user