Commit 6fcf1e65 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

perf hist: Add weight fields to hist entry stats



Like period and sample numbers, it'd be better to track weight values
and display them in the output rather than having them as sort keys.

This patch just adds a few more fields to save the weights in a hist
entry.  It'll be displayed as new output fields in the later patch.

Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20240411181718.2367948-2-namhyung@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0993d724
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -308,6 +308,9 @@ static void he_stat__add_stat(struct he_stat *dest, struct he_stat *src)
	dest->period_us		+= src->period_us;
	dest->period_guest_sys	+= src->period_guest_sys;
	dest->period_guest_us	+= src->period_guest_us;
	dest->weight1		+= src->weight1;
	dest->weight2		+= src->weight2;
	dest->weight3		+= src->weight3;
	dest->nr_events		+= src->nr_events;
}

@@ -315,7 +318,9 @@ static void he_stat__decay(struct he_stat *he_stat)
{
	he_stat->period = (he_stat->period * 7) / 8;
	he_stat->nr_events = (he_stat->nr_events * 7) / 8;
	/* XXX need decay for weight too? */
	he_stat->weight1 = (he_stat->weight1 * 7) / 8;
	he_stat->weight2 = (he_stat->weight2 * 7) / 8;
	he_stat->weight3 = (he_stat->weight3 * 7) / 8;
}

static void hists__delete_entry(struct hists *hists, struct hist_entry *he);
@@ -614,7 +619,7 @@ static struct hist_entry *hists__findnew_entry(struct hists *hists,
		cmp = hist_entry__cmp(he, entry);
		if (!cmp) {
			if (sample_self) {
				he_stat__add_period(&he->stat, period);
				he_stat__add_stat(&he->stat, &entry->stat);
				hist_entry__add_callchain_period(he, period);
			}
			if (symbol_conf.cumulate_callchain)
@@ -731,6 +736,9 @@ __hists__add_entry(struct hists *hists,
		.stat = {
			.nr_events = 1,
			.period	= sample->period,
			.weight1 = sample->weight,
			.weight2 = sample->ins_lat,
			.weight3 = sample->p_stage_cyc,
		},
		.parent = sym_parent,
		.filtered = symbol__parent_filter(sym_parent) | al->filtered,
+3 −0
Original line number Diff line number Diff line
@@ -163,6 +163,9 @@ struct he_stat {
	u64			period_us;
	u64			period_guest_sys;
	u64			period_guest_us;
	u64			weight1;
	u64			weight2;
	u64			weight3;
	u32			nr_events;
};