Relationship between opt.prof and opt.prof_leak

Jason Evans jasone at canonware.com
Sun Nov 8 11:35:39 PST 2015


On Nov 6, 2015, at 2:01 PM, Evan Jones <ejones at twitter.com> wrote:
> On Fri, Nov 6, 2015 at 4:57 PM, Jason Evans <jasone at canonware.com <mailto:jasone at canonware.com>> wrote:
> On Nov 6, 2015, at 12:53 PM, Evan Jones <ejones at twitter.com <mailto:ejones at twitter.com>> wrote:
>> On Fri, Nov 6, 2015 at 3:45 PM, Jason Evans <jasone at canonware.com <mailto:jasone at canonware.com>> wrote:
>> No, dumps are always based on the most recent stats reset (process start or "prof.reset" mallctl call).  You can view incremental differences between two dumps by using the --base option to jeprof.
>> 
>> Is this true if you use opt.lg_prof_interval? Then what is the point of the opt.prof_accum option?
> 
> opt.lg_prof_interval is merely a dump triggering mechanism.  opt.prof_accum controls whether cumulative stats are collected at all.
> 
> There must be something stupid that I don't understand then. You said: "dumps are always based on the most recent stats reset", which is usually the process start time, unless you do some manual reset. Does this mean that prof_accum is *only* useful if you do manually trigger resets using mallctl("prof.reset")? Does this mean that with prof_accum:true, the dumps contain *both* the data since the last reset *and* the data since profiling was enabled?

Take the following function as an example, run with MALLOC_CONF=prof:true,prof_accum:true :

	void	g(void *p);

	void
	f(void) {
		unsigned i;

		for (i = 0; i < (1U << 20); i++) {
			void *p = malloc(1U << 30);
			if (i == (1U << 19)) {
				mallctl("prof.dump", NULL, NULL, NULL, 0); /* A */
				mallctl("prof.reset", NULL, NULL, NULL, 0);
				mallctl("prof.dump", NULL, NULL, NULL, 0); /* B */
			}
			if (p != NULL) {
				g(p);
				free(p);
			}
		}
		mallctl("prof.dump", NULL, NULL, NULL, 0); /* C */
	}

What will the heap profiling stats (as interpreted by jeprof) dumped at A, B, and C say regarding the malloc() site in f()?

A:
  - Current: ~1 object, ~2^30 bytes
  - Cumulative: ~2^19 objects, ~2^49 bytes
B:
  - Current: 0 objects, 0 bytes
  - Cumulative: 0 objects, 0 bytes
C:
  - Current: 0 objects, 0 bytes
  - Cumulative: ~2^19 objects, ~2^49 bytes

opt.prof_accum controls whether jemalloc maintains the cumulative stats.  With MALLOC_CONF=prof:true,prof_accum:false, you will get no cumulative stats at all, no matter when/whether any resets occurred.

Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jemalloc.net/mailman/jemalloc-discuss/attachments/20151108/e7c527fe/attachment.html>


More information about the jemalloc-discuss mailing list