Re: attr inherit vs inherit_stat
On Tue, 7 Aug 2012 15:47:32 -0400, Vince Weaver wrote: > Hello Hello Vince, > > I'm trying to figure out the difference between the "inherit" and > "inherit_stat" bitfields in the perf_event_attr structure. > > Both seem to have similar functionality, and the code in core.c > is hard to follow. > > Does anyone have any idea? AFAIK the "inherit" field determines whether the event is inherited to a child process/thread. The "inherit_stat" is only meaningful when the "inherit" field is also set and it'll preserve (saved) event counts between context switch of the inherited processes/threads. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: attr inherit vs inherit_stat
On Tue, 4 Sep 2012, Namhyung Kim wrote: > > AFAIK the "inherit" field determines whether the event is inherited to a > child process/thread. The "inherit_stat" is only meaningful when the > "inherit" field is also set and it'll preserve (saved) event counts > between context switch of the inherited processes/threads. Thank you for taking the time to answer! I'm still trying to construct a test case that shows the difference but I'm failing. Aren't the stats *always* saved on context switch? Does this affect what happens when you read the perf_event fd in the inherited threads, or only from the master thread? What is the expected behavior if you set inherit_thread but do not set inherit? Thanks for any clarifications you can provide, Vince -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: attr inherit vs inherit_stat
(Adding peterz in case he has a time to answer) On Thu, 6 Sep 2012 11:19:21 -0400, Vince Weaver wrote: > On Tue, 4 Sep 2012, Namhyung Kim wrote: >> >> AFAIK the "inherit" field determines whether the event is inherited to a >> child process/thread. The "inherit_stat" is only meaningful when the >> "inherit" field is also set and it'll preserve (saved) event counts >> between context switch of the inherited processes/threads. > > Thank you for taking the time to answer! > > I'm still trying to construct a test case that shows the difference but > I'm failing. Please note that my understanding of perf core code is not firm enough so there might be some mistakes. ;-) > > Aren't the stats *always* saved on context switch? If both of them are cloned from the same parent event context and there's no event added in the meantime. Please see perf_event_context_sched_out() calling perf_event_sync_stat. > > Does this affect what happens when you read the perf_event fd in the > inherited threads, or only from the master thread? It might. But I guess the master thread doesn't get affected from that. > > What is the expected behavior if you set inherit_thread but do not set > inherit? You meant inherit_stat, right? If so, it looks it'd be a nop since there's no inherited events. Maybe the perf tools can be changed to warn about that. Thanks, Namhyung -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: attr inherit vs inherit_stat
On Fri, 2012-09-07 at 10:20 +0900, Namhyung Kim wrote: > (Adding peterz in case he has a time to answer) > > On Thu, 6 Sep 2012 11:19:21 -0400, Vince Weaver wrote: > > On Tue, 4 Sep 2012, Namhyung Kim wrote: > >> > >> AFAIK the "inherit" field determines whether the event is inherited to a > >> child process/thread. The "inherit_stat" is only meaningful when the > >> "inherit" field is also set and it'll preserve (saved) event counts > >> between context switch of the inherited processes/threads. > > > > Thank you for taking the time to answer! > > > > I'm still trying to construct a test case that shows the difference but > > I'm failing. inherit && inherit_stat preserves the counts per-task and issues a PERF_RECORD_READ when a task dies. This allows a per-task stat on an inherited process hierarchy. > > Aren't the stats *always* saved on context switch? No, they're normally swizzled around, the only thing we care about is the total event count for the entire task-set, not the count of the individual tasks. > > Does this affect what happens when you read the perf_event fd in the > > inherited threads, or only from the master thread? read() on an inherited event gives the total count of the entire hierarchy. > > What is the expected behavior if you set inherit_thread but do not set > > inherit? > > You meant inherit_stat, right? If so, it looks it'd be a nop since > there's no inherited events. Maybe the perf tools can be changed to > warn about that. Right that would be a pointless configuration. -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html