All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@gmail.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: jolsa@redhat.com, linux-kernel@vger.kernel.org, acme@infradead.org
Subject: Re: perf: Add support for full Intel event lists v5
Date: Mon, 09 Jun 2014 14:56:34 +0900	[thread overview]
Message-ID: <878up6d3sd.fsf@sejong.aot.lge.com> (raw)
In-Reply-To: <1401486615-21374-1-git-send-email-andi@firstfloor.org> (Andi Kleen's message of "Fri, 30 May 2014 14:50:06 -0700")

On Fri, 30 May 2014 14:50:06 -0700, Andi Kleen wrote:
> [v2: Review feedback addressed and some minor improvements]
> [v3: More review feedback addressed and handle test failures better.
> Ported to latest tip/core.]
> [v4: Addressed Namhyung's feedback]
> [v5: Rebase to latest tree. Minor description update.]
>
> perf has high level events which are useful in many cases. However
> there are some tuning situations where low level events in the CPU
> are needed. Traditionally this required specifying the event in 
> raw form (very awkward) or using non standard frontends
> like ocperf or patching in libpfm.
>
> Intel CPUs can have very large event files (Haswell has ~336 core events,
> much more if you add uncore or all the offcore combinations), which is too
> large to describe through the kernel interface. It would require tying up
> significant amounts of unswappable memory for this.
>
> oprofile always had separate event list files that were maintained by 
> the CPU vendors. The oprofile events were shipped with the tool.
> The Intel events get updated regularly, for example to add references
> to the specification updates or add new events.
>
> Unfortunately oprofile usually did not keep up with these updates,
> so the events in oprofile were often out of date. In addition
> it ties up quite a bit of disk space, mostly for CPUs you don't have.
>
> This patch kit implements another mechanism that avoids these problems.
> Intel releases the event lists for CPUs in a standardized JSON format
> on a download server.
>
> I implemented an automatic downloader to get the event file for the
> current CPU.  The events are stored in ~/.cache/pmu-events.
> Then perf adds a parser that converts the JSON format into perf event
> aliases, which then can be used directly as any other perf event.
>
> The parsing is done using a simple existing JSON library.
>
> The events are still abstracted for perf, but the abstraction mechanism is
> through the downloaded file instead of through the kernel.
>
> The JSON format and perf parser has some minor Intelisms, but they
> are simple and small and optional. It's easy to extend, so it would be
> possible to use it for other CPUs too, add different pmu attributes, and
> add new download sites to the downloader tool.
>
> Currently only core events are supported, uncore may come at a later
> point. No kernel changes, all code in perf user tools only.
>
> Some of the parser files are partially shared with separate event parser
> library and are thus 2-clause BSD licensed.

So I played with this patchset for a little while, and it's mostly good
and I left comments for each patch I have concerns.  With that change,

Acked-by: Namhyung Kim <namhyung@kernel.org>


Hopefully other vendors will add support for their cpus too.

Thanks,
Namhyung


>
> Patches also available from
> git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc perf/json
>
> Example output:
>
> % perf download 
> Downloading models file
> Downloading readme.txt
> 2014-03-05 10:39:33 URL:https://download.01.org/perfmon/readme.txt [10320/10320] -> "readme.txt" [1]
> 2014-03-05 10:39:34 URL:https://download.01.org/perfmon/mapfile.csv [1207/1207] -> "mapfile.csv" [1]
> Downloading events file
> % perf list
> ...
>   br_inst_exec.all_branches                          [Speculative and retired
>                                                       branches]
>   br_inst_exec.all_conditional                       [Speculative and retired
>                                                       macro-conditional
>                                                       branches]
>   br_inst_exec.all_direct_jmp                        [Speculative and retired
>                                                       macro-unconditional
>                                                       branches excluding
>                                                       calls and indirects]
> ... 333 more new events ...
>
> % perf stat -e br_inst_exec.all_direct_jmp true
>
>  Performance counter stats for 'true':
>
>              6,817      cpu/br_inst_exec.all_direct_jmp/                                   
>
>        0.003503212 seconds time elapsed
>
> One nice feature is that a pointer to the specification update is now
> included in the description, which will hopefully clear up many problems:
>
> % perf list
> ...
>   mem_load_uops_l3_hit_retired.xsnp_hit              [Retired load uops which
>                                                       data sources were L3
>                                                       and cross-core snoop
>                                                       hits in on-pkg core
>                                                       cache. Supports address
>                                                       when precise. Spec
>                                                       update: HSM26, HSM30
>                                                       (Precise event)]
> ...
>
>
> -Andi

  parent reply	other threads:[~2014-06-09  5:56 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-30 21:50 perf: Add support for full Intel event lists v5 Andi Kleen
2014-05-30 21:50 ` [PATCH 1/9] perf, tools: Add jsmn `jasmine' JSON parser v2 Andi Kleen
2014-05-30 21:50 ` [PATCH 2/9] perf, tools: Add support for text descriptions of events and alias add Andi Kleen
2014-06-09  4:57   ` Namhyung Kim
2014-06-09 16:52     ` Andi Kleen
2014-06-10  5:58       ` Namhyung Kim
2014-05-30 21:50 ` [PATCH 3/9] perf, tools: Add support for reading JSON event files v3 Andi Kleen
2014-05-30 21:50 ` [PATCH 4/9] perf, tools: Automatically look for event file name for cpu v2 Andi Kleen
2014-05-30 21:50 ` [PATCH 5/9] perf, tools: Add perf download to download event files v3 Andi Kleen
2014-05-30 21:50 ` [PATCH 6/9] perf, tools: Allow events with dot Andi Kleen
2014-05-30 21:50 ` [PATCH 7/9] perf, tools: Query terminal width and use in perf list Andi Kleen
2014-05-30 21:50 ` [PATCH 8/9] perf, tools, test: Add test case for alias and JSON parsing v2 Andi Kleen
2014-05-30 21:50 ` [PATCH 9/9] perf, tools, record: Always allow to overide default period v2 Andi Kleen
2014-06-04 15:33   ` Namhyung Kim
2014-06-04 16:59     ` Andi Kleen
2014-06-09  5:21       ` Namhyung Kim
2014-06-09  5:56 ` Namhyung Kim [this message]
2014-06-09 18:01   ` perf: Add support for full Intel event lists v5 Andi Kleen

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=878up6d3sd.fsf@sejong.aot.lge.com \
    --to=namhyung@gmail.com \
    --cc=acme@infradead.org \
    --cc=andi@firstfloor.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.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.