Linux-Trace-Devel Archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: linux-trace-devel@vger.kernel.org
Cc: Stevie Alvarez <stevie.6strings@gmail.com>,
	Ross Zwisler <zwisler@google.com>,
	"Steven Rostedt (Google)" <rostedt@goodmis.org>
Subject: [PATCH v2 00/17] libtraceeval histogram: Updates
Date: Fri, 11 Aug 2023 01:39:23 -0400	[thread overview]
Message-ID: <20230811053940.1408424-1-rostedt@goodmis.org> (raw)

From: "Steven Rostedt (Google)" <rostedt@goodmis.org>

This patch set is based on top of:

 https://lore.kernel.org/all/20230809175340.3066-1-stevie.6strings@gmail.com/

I added a sample program task-eval which is one of the tools that will be
using this library. The first patch adds task-eval but that is still using
the old API (defined in trace-analysis.c).

The next patches modify the new API to fit with the use case of task-eval.
One is to use "pointer" as I'm not sure exactly the usecase of the dynamic
structure.

The cmp and release callbacks are changed to be more generic, and they get
called if they simply exist for a given type. I can imagine wanting a
release function for event the most mundane types (like number_32).

The cmp was also updated to pass in the traceeval descriptor, as I found
that I needed access to it while doing a compare (although, I rewrote the
code a bit where that use case isn't in the tool anymore).

Some fixes were made to the query.

I also did a bit of code restructuring and add the hash and iterator logic.

The last patch updates the sample code task-eval.c and has it give pretty
much the same logic as the original.

That sample could be updated to implement the code consolidation that Ross
suggested. I may do that later.

Happy programming!

Changes since v1: https://lore.kernel.org/all/20230809031313.1298605-1-rostedt@goodmis.org/

 - Lots!

   - Converted to using a hash table

   - Removed the unused compare code. With the other updates, it was
     taking too much time to keep updating them.

   - Added checks and labels to the types to have them know what type
     they are, and index they are at.

   - Added stat logic

   - Added iterator logic

   - Have a working sample with the new code!

Steven Rostedt (Google) (17):
  libtraceeval histograms: Fix traceeval_results_release() error message
  libtraceeval: Add sample task-eval program
  libtraceeval hist: Add pointer and const string types
  libtraceeval histogram: Have cmp and release functions be generic
  libtraceeval histograms: Add traceeval struct to compare function
  libtraceeval histogram: Remove comparing of traceeval and types
  libtraceeval: Convert hist array into a hash table
  libtraceeval histograms: Move hash functions into their own file
  libtraceeval histogram: Label and check keys and values
  libtraceeval histogram: Add updating of stats
  libtraceeval histogram: Add iterator APIs
  libtraceeval histogram: Add data copy callback
  libtraceeval histogram: Do the release on updates
  libtraceeval histogram: Use stack for old copy in update
  libtraceeval histogram: Add traceeval_iterator_sort_custom()
  libtraceeval histogram: Have traceeval_query() just give the pointer
    to results
  libtraceeval samples: Update task-eval to use the histogram logic

 Makefile                 |   4 +-
 include/traceeval-hist.h | 110 +++--
 include/traceeval-test.h |  16 -
 samples/Makefile         |  29 ++
 samples/task-eval.c      | 952 +++++++++++++++++++++++++++++++++++++++
 src/Makefile             |   1 +
 src/eval-local.h         | 123 +++++
 src/hash.c               | 123 +++++
 src/histograms.c         | 878 ++++++++++++++++++++++++++----------
 9 files changed, 1952 insertions(+), 284 deletions(-)
 delete mode 100644 include/traceeval-test.h
 create mode 100644 samples/Makefile
 create mode 100644 samples/task-eval.c
 create mode 100644 src/eval-local.h
 create mode 100644 src/hash.c

-- 
2.40.1


             reply	other threads:[~2023-08-11  5:39 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-11  5:39 Steven Rostedt [this message]
2023-08-11  5:39 ` [PATCH v2 01/17] libtraceeval histograms: Fix traceeval_results_release() error message Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 02/17] libtraceeval: Add sample task-eval program Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 03/17] libtraceeval hist: Add pointer and const string types Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 04/17] libtraceeval histogram: Have cmp and release functions be generic Steven Rostedt
2023-08-15 16:50   ` Ross Zwisler
2023-08-15 18:52     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 05/17] libtraceeval histograms: Add traceeval struct to compare function Steven Rostedt
2023-08-15 16:55   ` Ross Zwisler
2023-08-15 18:53     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 06/17] libtraceeval histogram: Remove comparing of traceeval and types Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 07/17] libtraceeval: Convert hist array into a hash table Steven Rostedt
2023-08-15 18:44   ` Ross Zwisler
2023-08-15 19:05     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 08/17] libtraceeval histograms: Move hash functions into their own file Steven Rostedt
2023-08-15 19:31   ` Ross Zwisler
2023-08-15 20:23     ` Steven Rostedt
2023-08-15 22:56       ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 09/17] libtraceeval histogram: Label and check keys and values Steven Rostedt
2023-08-15 19:48   ` Ross Zwisler
2023-08-15 20:24     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 10/17] libtraceeval histogram: Add updating of stats Steven Rostedt
2023-08-15 20:25   ` Ross Zwisler
2023-08-15 20:55     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 11/17] libtraceeval histogram: Add iterator APIs Steven Rostedt
2023-08-16 21:34   ` Ross Zwisler
2023-08-16 21:49     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 12/17] libtraceeval histogram: Add data copy callback Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 13/17] libtraceeval histogram: Do the release on updates Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 14/17] libtraceeval histogram: Use stack for old copy in update Steven Rostedt
2023-08-16 22:37   ` Ross Zwisler
2023-08-16 23:12     ` Steven Rostedt
2023-08-17  1:03       ` Steven Rostedt
2023-08-17  1:13       ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 15/17] libtraceeval histogram: Add traceeval_iterator_sort_custom() Steven Rostedt
2023-08-16 22:57   ` Ross Zwisler
2023-08-16 23:22     ` Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 16/17] libtraceeval histogram: Have traceeval_query() just give the pointer to results Steven Rostedt
2023-08-11  5:39 ` [PATCH v2 17/17] libtraceeval samples: Update task-eval to use the histogram logic Steven Rostedt

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=20230811053940.1408424-1-rostedt@goodmis.org \
    --to=rostedt@goodmis.org \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=stevie.6strings@gmail.com \
    --cc=zwisler@google.com \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).