How about moving `time' to the `group', Will this help? Regards,
Tong Signed-off-by: Tong Zhang <zt...@vt.edu> ------ diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 3f590de..3163598 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -797,6 +797,7 @@ struct perf_sample_data { u64 period; u64 weight; u64 txn; + u64 time; union perf_mem_data_src data_src; /* @@ -809,7 +810,6 @@ struct perf_sample_data { u32 pid; u32 tid; } tid_entry; - u64 time; u64 id; u64 stream_id; struct { On Thu, Feb 11, 2016 at 9:57 AM, Peter Zijlstra <pet...@infradead.org> wrote: > On Wed, Feb 10, 2016 at 05:38:02PM -0500, Tong Zhang wrote: >> commit a7b58d211ba18c9175b139e18b68c86a6bcc3c3f introduced feature of >> timestamp on free running PEBSv3, however, the timestamp is later >> overwritten, which makes the effort in vain. >> >> This patch fixed this problem by detecting whether timestamp is provided. >> >> Signed-off-by: Tong Zhang <zt...@vt.edu> >> --- >> include/linux/perf_event.h | 1 + >> kernel/events/core.c | 45 >> +++++++++++++++++++++++++++++++++------------ >> kernel/events/ring_buffer.c | 4 +++- >> 3 files changed, 37 insertions(+), 13 deletions(-) >> >> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h >> index f9828a4..12d7b95 100644 >> --- a/include/linux/perf_event.h >> +++ b/include/linux/perf_event.h >> @@ -815,6 +815,7 @@ static inline void perf_sample_data_init(struct >> perf_sample_data *data, >> data->weight = 0; >> data->data_src.val = PERF_MEM_NA; >> data->txn = 0; >> + data->time = 0; >> } > > Argh, you just touched a new cacheline and made _every_ single event > slower.