All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Liang, Kan" <kan.liang@linux.intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: mingo@redhat.com, acme@kernel.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, jolsa@redhat.com, eranian@google.com,
	ak@linux.intel.com
Subject: Re: [PATCH 2/4] perf/x86/intel: fix event update for auto-reload
Date: Tue, 19 Dec 2017 18:25:47 -0500	[thread overview]
Message-ID: <4a69ef66-acc3-c8d6-342d-270be19f201a@linux.intel.com> (raw)
In-Reply-To: <20171219220709.sq7kwvg7l2ojltvr@hirez.programming.kicks-ass.net>



On 12/19/2017 5:07 PM, Peter Zijlstra wrote:
> On Tue, Dec 19, 2017 at 03:08:58PM -0500, Liang, Kan wrote:
>>> This all looks very wrong... In auto reload we should never call
>>> intel_pmu_save_and_restore() in the first place I think.
>>>
>>> Things like x86_perf_event_update() and x86_perf_event_set_period()
>>> simply _cannot_ do the right thing when we auto reload the counter.
>>>
>>
>> I think it should be OK to call it in first place.
>> For x86_perf_event_update(), the reload_times will tell if it's auto reload.
>> Both period_left and event->count are carefully recalculated for auto
>> reload.
> 
> How does prev_count make sense when we've already reloaded a bunch of
> times?

Same as non-auto-reload, it's the 'left' (unfinished) period from last time.
The period for the first record should always be the 'left' period no 
matter on which case.
For auto-reload, it doesn't need to increase the prev_count with the 
reload. Because for later records, the period should be exactly the same 
as the reload value.

To calculate the event->count,
For auto-reload, the event->count = prev_count + (reload times - 1) * 
reload value + gap between PMI trigger and PMI handler.

For non-auto-reload, the event->count = prev_count + gap between PMI 
trigger and PMI handler.

The 'prev_count' is same for both auto-reload and non-auto-reload.

The gap is a little bit tricky for auto-reload. Because it starts from 
-reload_value. But for non-auto-reload, it starts from 0.
"delta += (reload_val << shift);" is used to correct it.

> 
>> For x86_perf_event_set_period(), there is nothing special needed for auto
>> reload. The period is fixed. The period_left from x86_perf_event_update() is
>> already handled.
> 
> Hurm.. I see. But rather than make an ever bigger trainwreck of things,
> I'd rather you just write a special purpose intel_pmu_save_and_restart()
> just for AUTO_RELOAD.

OK. I will do it in V2.

Thanks,
Kan

  parent reply	other threads:[~2017-12-19 23:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18 11:34 [PATCH 0/4] bug fix mmap read in large PEBS kan.liang
2017-12-18 11:34 ` [PATCH 1/4] perf/x86/intel: pass auto-reload information to event update kan.liang
2017-12-18 11:34 ` [PATCH 2/4] perf/x86/intel: fix event update for auto-reload kan.liang
2017-12-19 18:58   ` Peter Zijlstra
2017-12-19 20:08     ` Liang, Kan
2017-12-19 20:24       ` Liang, Kan
2017-12-19 22:07       ` Peter Zijlstra
2017-12-19 22:11         ` Andi Kleen
2017-12-19 23:25         ` Liang, Kan [this message]
2017-12-18 11:34 ` [PATCH 3/4] perf/x86: introduce read function for x86_pmu kan.liang
2017-12-18 11:34 ` [PATCH 4/4] perf/x86/intel: drain PEBS buffer in event read kan.liang
2017-12-19 19:02   ` Peter Zijlstra
2017-12-19 20:10     ` 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=4a69ef66-acc3-c8d6-342d-270be19f201a@linux.intel.com \
    --to=kan.liang@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=eranian@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.