xref: /freebsd/contrib/jemalloc/src/peak_event.c (revision c43cad87172039ccf38172129c79755ea79e6102)
1*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_preamble.h"
2*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_internal_includes.h"
3*c43cad87SWarner Losh 
4*c43cad87SWarner Losh #include "jemalloc/internal/peak_event.h"
5*c43cad87SWarner Losh 
6*c43cad87SWarner Losh #include "jemalloc/internal/activity_callback.h"
7*c43cad87SWarner Losh #include "jemalloc/internal/peak.h"
8*c43cad87SWarner Losh 
9*c43cad87SWarner Losh /*
10*c43cad87SWarner Losh  * Update every 64K by default.  We're not exposing this as a configuration
11*c43cad87SWarner Losh  * option for now; we don't want to bind ourselves too tightly to any particular
12*c43cad87SWarner Losh  * performance requirements for small values, or guarantee that we'll even be
13*c43cad87SWarner Losh  * able to provide fine-grained accuracy.
14*c43cad87SWarner Losh  */
15*c43cad87SWarner Losh #define PEAK_EVENT_WAIT (64 * 1024)
16*c43cad87SWarner Losh 
17*c43cad87SWarner Losh /* Update the peak with current tsd state. */
18*c43cad87SWarner Losh void
19*c43cad87SWarner Losh peak_event_update(tsd_t *tsd) {
20*c43cad87SWarner Losh 	uint64_t alloc = tsd_thread_allocated_get(tsd);
21*c43cad87SWarner Losh 	uint64_t dalloc = tsd_thread_deallocated_get(tsd);
22*c43cad87SWarner Losh 	peak_t *peak = tsd_peakp_get(tsd);
23*c43cad87SWarner Losh 	peak_update(peak, alloc, dalloc);
24*c43cad87SWarner Losh }
25*c43cad87SWarner Losh 
26*c43cad87SWarner Losh static void
27*c43cad87SWarner Losh peak_event_activity_callback(tsd_t *tsd) {
28*c43cad87SWarner Losh 	activity_callback_thunk_t *thunk = tsd_activity_callback_thunkp_get(
29*c43cad87SWarner Losh 	    tsd);
30*c43cad87SWarner Losh 	uint64_t alloc = tsd_thread_allocated_get(tsd);
31*c43cad87SWarner Losh 	uint64_t dalloc = tsd_thread_deallocated_get(tsd);
32*c43cad87SWarner Losh 	if (thunk->callback != NULL) {
33*c43cad87SWarner Losh 		thunk->callback(thunk->uctx, alloc, dalloc);
34*c43cad87SWarner Losh 	}
35*c43cad87SWarner Losh }
36*c43cad87SWarner Losh 
37*c43cad87SWarner Losh /* Set current state to zero. */
38*c43cad87SWarner Losh void
39*c43cad87SWarner Losh peak_event_zero(tsd_t *tsd) {
40*c43cad87SWarner Losh 	uint64_t alloc = tsd_thread_allocated_get(tsd);
41*c43cad87SWarner Losh 	uint64_t dalloc = tsd_thread_deallocated_get(tsd);
42*c43cad87SWarner Losh 	peak_t *peak = tsd_peakp_get(tsd);
43*c43cad87SWarner Losh 	peak_set_zero(peak, alloc, dalloc);
44*c43cad87SWarner Losh }
45*c43cad87SWarner Losh 
46*c43cad87SWarner Losh uint64_t
47*c43cad87SWarner Losh peak_event_max(tsd_t *tsd) {
48*c43cad87SWarner Losh 	peak_t *peak = tsd_peakp_get(tsd);
49*c43cad87SWarner Losh 	return peak_max(peak);
50*c43cad87SWarner Losh }
51*c43cad87SWarner Losh 
52*c43cad87SWarner Losh uint64_t
53*c43cad87SWarner Losh peak_alloc_new_event_wait(tsd_t *tsd) {
54*c43cad87SWarner Losh 	return PEAK_EVENT_WAIT;
55*c43cad87SWarner Losh }
56*c43cad87SWarner Losh 
57*c43cad87SWarner Losh uint64_t
58*c43cad87SWarner Losh peak_alloc_postponed_event_wait(tsd_t *tsd) {
59*c43cad87SWarner Losh 	return TE_MIN_START_WAIT;
60*c43cad87SWarner Losh }
61*c43cad87SWarner Losh 
62*c43cad87SWarner Losh void
63*c43cad87SWarner Losh peak_alloc_event_handler(tsd_t *tsd, uint64_t elapsed) {
64*c43cad87SWarner Losh 	peak_event_update(tsd);
65*c43cad87SWarner Losh 	peak_event_activity_callback(tsd);
66*c43cad87SWarner Losh }
67*c43cad87SWarner Losh 
68*c43cad87SWarner Losh uint64_t
69*c43cad87SWarner Losh peak_dalloc_new_event_wait(tsd_t *tsd) {
70*c43cad87SWarner Losh 	return PEAK_EVENT_WAIT;
71*c43cad87SWarner Losh }
72*c43cad87SWarner Losh 
73*c43cad87SWarner Losh uint64_t
74*c43cad87SWarner Losh peak_dalloc_postponed_event_wait(tsd_t *tsd) {
75*c43cad87SWarner Losh 	return TE_MIN_START_WAIT;
76*c43cad87SWarner Losh }
77*c43cad87SWarner Losh 
78*c43cad87SWarner Losh void
79*c43cad87SWarner Losh peak_dalloc_event_handler(tsd_t *tsd, uint64_t elapsed) {
80*c43cad87SWarner Losh 	peak_event_update(tsd);
81*c43cad87SWarner Losh 	peak_event_activity_callback(tsd);
82*c43cad87SWarner Losh }
83