All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>
Subject: Re: perf_counter: request for three more sample data options
Date: Fri, 03 Apr 2009 09:01:04 +0200	[thread overview]
Message-ID: <1238742064.798.8.camel@twins> (raw)
In-Reply-To: <49D56A7E.80908@linux.vnet.ibm.com>

On Thu, 2009-04-02 at 18:46 -0700, Corey Ashford wrote:
> Currently, perf_counter has the ability to record the following on event 
> counter overflow:
> 
> Instruction Pointer
> Call chain
> Group counter values
> Thread id
> 
> To give perf_counter similar capabilities to perfmon2's default sampling 
>   module, I'd like the following additional sample data to be added.
> 
> Time stamp
 
Rather hard actually, to provide a decent timestamp from NMI context.

> CPU number

Could do I guess.

> Thread Group Id

As in the process id? PERF_RECORD_TID already provides that.

> I'd suggest the following
> 
> enum perf_counter_record_format {
>          PERF_RECORD_IP          = 1U << 0,
>          PERF_RECORD_TID         = 1U << 1,
>          PERF_RECORD_TGID        = 1U << 2,
> -        PERF_RECORD_GROUP       = 1U << 2,
> +        PERF_RECORD_GROUP       = 1U << 3,
> -        PERF_RECORD_CALLCHAIN   = 1U << 3,
> +        PERF_RECORD_CALLCHAIN   = 1U << 4,
> +        PERF_RECORD_CPU_ID      = 1U << 5,
> +        PERF_RECORD_TIMESTAMP   = 1U << 6,
> };
> 
> And of course the obvious changes to perf_event_type.
> 
> I would expect that CPU ID would be 32 bits, and the timestamp to be the 
> 64-bit current time.  TGID is the same size as TID.

Right, so PREF_RECORD_TID provides:

 { u32 pid, tid; }

PERF_RECORD_TIMESTAMP would provide something like:

 { u64 time; }

and per our u64 alignment rule, PERF_RECORD_CPU would provide

 { u64 cpuid; }

unless you can think of anything else to stuff in there?

> I am guessing the only difficult thing here would be obtaining the 
> current time from an IRQ, especially NMI handler.  Is this difficult?

Yes, quite :-) I'll have to see what we can do there -- we could do a
best effort thing with little to no guarantees I think.


  reply	other threads:[~2009-04-03  7:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-03  1:46 perf_counter: request for three more sample data options Corey Ashford
2009-04-03  7:01 ` Peter Zijlstra [this message]
2009-04-03  7:25   ` Corey Ashford
2009-04-03  7:51     ` Peter Zijlstra
2009-04-03  8:51       ` Paul Mackerras
2009-04-03 16:38         ` Robert Richter
2009-04-03 16:41           ` Ingo Molnar
2009-04-03 16:59             ` Peter Zijlstra
2009-04-03 17:05               ` Ingo Molnar
2009-04-03 16:32       ` Ingo Molnar

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=1238742064.798.8.camel@twins \
    --to=a.p.zijlstra@chello.nl \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    /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.