From: Andi Kleen <email@example.com> To: Adrian Hunter <firstname.lastname@example.org>, Arnaldo Carvalho de Melo <email@example.com> Cc: Jiri Olsa <firstname.lastname@example.org>, Peter Zijlstra <email@example.com>, Ingo Molnar <firstname.lastname@example.org>, Mark Rutland <email@example.com>, Namhyung Kim <firstname.lastname@example.org>, Leo Yan <email@example.com>, Kan Liang <firstname.lastname@example.org>, email@example.com, firstname.lastname@example.org Subject: Re: [PATCH V2 00/10] perf script: Add API for filtering via dynamically loaded shared object Date: Mon, 28 Jun 2021 07:57:03 -0700 [thread overview] Message-ID: <email@example.com> (raw) In-Reply-To: <firstname.lastname@example.org> On 6/28/2021 12:23 AM, Adrian Hunter wrote: > On 27/06/21 7:13 pm, Andi Kleen wrote: >> On 6/27/2021 6:18 AM, Adrian Hunter wrote: >>> Hi In some cases, users want to filter very large amounts of data >>> (e.g. from AUX area tracing like Intel PT) looking for something >>> specific. While scripting such as Python can be used, Python is 10 >>> to 20 times slower than C. So define a C API so that custom filters >>> can be written and loaded. >> While I appreciate this for complex cases, in my experience filtering >> is usually just a simple expression. It would be nice to also have a >> way to do this reasonably fast without having to write a custom C > I do not agree that writing C filters is a hassle e.g. a minimal do-nothing > filter is only a few lines: It still doesn't seem user friendly. Maybe it's obvious to you, but I suspect we left behind most of even the sophisticated perf users here. > >> Maybe we could have some kind of python fast path >> just for filters? > I expect there are ways to make it more efficient, but I doubt it would ever > come close to C. If it's within 2-3x I guess it would be ok. For any larger data files we should parallelize anyways, and that works fine with the --time x/y method (although it usually also needs some custom scripting, perhaps need to figure out how to make it more user friendly) > >> just for filters? Or maybe the alternative would be to have a >> frontend in perf that can automatically generate/compile such a C >> filter based on a simple expression, but I'm not sure if that would >> be much simpler. > If gcc is available, perf script could, in fact, build the .so on the fly > since the compile time is very quick. > > Another point is that filters can be used for more than just filtering. > Here is an example which sums cycles per-cpu and prints them, and the difference > to the last print, at the beginning of each line. I think this was something > you were interested in doing? Yes that's great and useful, but I would prefer to not maintain custom plugins for it. Often when I write a script it has to run in all kinds of weird environments that some random person installed, and it's not clear how portable building C will be there. And I doubt I can just copy the .so files around. BTW I'm not arguing to not do the plugin (I can imagine extreme cases where such a plugin is the best option), but really for most of these things there should be easier and more portable alternatives, even if they are slightly slower. -Andi
next prev parent reply other threads:[~2021-06-28 15:03 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-27 13:18 Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 01/10] " Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 02/10] perf script: Add dlfilter__filter_event_early() Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 03/10] perf script: Add option to list dlfilters Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 04/10] perf script: Add option to pass arguments to dlfilters Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 05/10] perf build: Install perf_dlfilter.h Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 06/10] perf dlfilter: Add resolve_address() to perf_dlfilter_fns Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 07/10] perf dlfilter: Add insn() " Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 08/10] perf dlfilter: Add srcline() " Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 09/10] perf dlfilter: Add attr() " Adrian Hunter 2021-06-27 13:18 ` [PATCH V2 10/10] perf dlfilter: Add object_code() " Adrian Hunter 2021-06-27 16:13 ` [PATCH V2 00/10] perf script: Add API for filtering via dynamically loaded shared object Andi Kleen 2021-06-28 7:23 ` Adrian Hunter 2021-06-28 14:57 ` Andi Kleen [this message] 2021-06-28 19:30 ` Adrian Hunter 2021-06-29 19:28 ` Namhyung Kim 2021-07-01 17:40 ` Arnaldo Carvalho de Melo
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 \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH V2 00/10] perf script: Add API for filtering via dynamically loaded shared object' \ /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
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).