linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: kan.liang@linux.intel.com
Cc: acme@kernel.org, mingo@redhat.com, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, jolsa@kernel.org, eranian@google.com,
	alexander.shishkin@linux.intel.com, ak@linux.intel.com
Subject: Re: [PATCH V4 07/14] perf/x86/intel: Support hardware TopDown metrics
Date: Mon, 30 Sep 2019 15:06:15 +0200	[thread overview]
Message-ID: <20190930130615.GN4553@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20190916134128.18120-8-kan.liang@linux.intel.com>

On Mon, Sep 16, 2019 at 06:41:21AM -0700, kan.liang@linux.intel.com wrote:
> Reset
> ======
> 
> Both PERF_METRICS and fixed counter 3 are required to start from zero.

explain *why*, also in the comments.

> However, current perf has -max_period as default initial value.
> The patch force initial value as 0 for topdown and slots event counting.
> 
> Additionally, for certain scenarios that involve counting metrics at
> high rates, SW is required to periodically clear both MSRs in order to
> maintain accurate measurements. In this patch, both PERF_METRICS and
> Fixed counter 3 are reset for each read.

That forgoes all the good details again :/ 


> Originally-by: Andi Kleen <ak@linux.intel.com>

This is of dubius value here and in that other patch. In that other
patch I've written more lines than Andi has and here you have pretty
much rewritten everything since v1 or so.

> +static bool is_first_topdown_event_in_group(struct perf_event *event)
> +{
> +	struct perf_event *first = NULL;
> +
> +	if (is_topdown_event(event->group_leader))
> +		first = event->group_leader;
> +	else {
> +		for_each_sibling_event(first, event->group_leader)
> +			if (is_topdown_event(first))
> +				break;
> +	}
> +
> +	if (event == first)
> +		return true;
> +
> +	return false;
> +}

> +static u64 icl_update_topdown_event(struct perf_event *event)
> +{
> +	struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
> +	struct perf_event *other;
> +	u64 slots, metrics;
> +	int idx;
> +
> +	/*
> +	 * Only need to update all events for the first
> +	 * slots/metrics event in a group
> +	 */
> +	if (event && !is_first_topdown_event_in_group(event))
> +		return 0;

This is pretty crap and approaches O(n^2); let me think if there's
anything saner to do here.


  reply	other threads:[~2019-09-30 13:06 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-16 13:41 [PATCH V4 00/14] TopDown metrics support for Icelake kan.liang
2019-09-16 13:41 ` [PATCH V4 01/14] perf/x86/intel: Introduce the fourth fixed counter kan.liang
2019-09-16 13:41 ` [PATCH V4 02/14] perf/x86/intel: Set correct mask for TOPDOWN.SLOTS kan.liang
2019-09-16 13:41 ` [PATCH V4 03/14] perf/x86/intel: Move BTS index to 47 kan.liang
2019-09-16 13:41 ` [PATCH V4 04/14] perf/x86/intel: Basic support for metrics counters kan.liang
2019-09-16 13:41 ` [PATCH V4 05/14] perf/x86/intel: Fix the name of perf capabilities for perf METRICS kan.liang
2019-09-16 13:41 ` [PATCH V4 06/14] x86/math64: Provide a sane mul_u64_u32_div() implementation for x86_64 kan.liang
2019-09-16 13:41 ` [PATCH V4 07/14] perf/x86/intel: Support hardware TopDown metrics kan.liang
2019-09-30 13:06   ` Peter Zijlstra [this message]
2019-09-30 14:07     ` Peter Zijlstra
2019-09-30 14:53       ` Peter Zijlstra
2019-09-30 16:17         ` Liang, Kan
2019-09-30 16:21           ` Peter Zijlstra
2019-09-30 16:45             ` Liang, Kan
2019-09-30 18:18               ` Andi Kleen
2019-09-30 13:36   ` Peter Zijlstra
2019-09-16 13:41 ` [PATCH V4 08/14] perf/x86/intel: Support per thread RDPMC " kan.liang
2019-09-30 15:52   ` Peter Zijlstra
2019-09-30 18:18     ` Liang, Kan
2019-09-16 13:41 ` [PATCH V4 09/14] perf/x86/intel: Export TopDown events for Icelake kan.liang
2019-09-16 13:41 ` [PATCH V4 10/14] perf/x86/intel: Disable sampling read slots and topdown kan.liang
2019-09-16 13:41 ` [PATCH V4 11/14] perf/x86/intel: Name global status bit in NMI handler kan.liang
2019-09-16 13:41 ` [PATCH V4 12/14] perf/x86: Use event_base_rdpmc for RDPMC userspace support kan.liang
2019-09-16 13:41 ` [PATCH V4 13/14] perf, tools, stat: Support new per thread TopDown metrics kan.liang
2019-09-16 13:41 ` [PATCH V4 14/14] perf, tools: Add documentation for topdown metrics kan.liang
2019-09-30 12:48 ` [PATCH V4 00/14] TopDown metrics support for Icelake Liang, Kan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190930130615.GN4553@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).