All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Jiri Olsa <jolsa@kernel.org>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	David Ahern <dsahern@gmail.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Jeremie Galarneau <jgalar@efficios.com>,
	Namhyung Kim <namhyung@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Tom Zanussi <tzanussi@gmail.com>
Subject: [PATCH 7/8] perf data: Enable stream flush within processing
Date: Thu, 11 Dec 2014 16:12:28 +0100	[thread overview]
Message-ID: <1418310749-22267-8-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1418310749-22267-1-git-send-email-jolsa@kernel.org>

For big data files the size of data allocated for stream
instance could get really high. It's needed to flush the
data out of the stream once in a while.

Unfortunately there's no size indication in the stream
object, so we govern the flush based on the number of
stored events. Current flush limit is set ot 100000
events.

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jeremie Galarneau <jgalar@efficios.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Tom Zanussi <tzanussi@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/util/data-convert-bt.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index 4bb769e081a8..3d73e51ee10d 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -43,6 +43,7 @@ struct evsel_priv {
 struct ctf_stream {
 	struct bt_ctf_stream *stream;
 	int cpu;
+	u32 count;
 };
 
 struct ctf_writer {
@@ -392,7 +393,10 @@ static int ctf_stream__flush(struct ctf_stream *cs)
 		if (err)
 			pr_err("CTF stream %d flush failed\n", cs->cpu);
 
-		pr("Flush stream for cpu %d\n", cs->cpu);
+		pr("Flush stream for cpu %d (%u samples)\n",
+		   cs->cpu, cs->count);
+
+		cs->count = 0;
 	}
 
 	return err;
@@ -490,6 +494,19 @@ static int get_sample_cpu(struct ctf_writer *cw, struct perf_sample *sample,
 	return cpu;
 }
 
+#define STREAM_FLUSH_COUNT 100000
+
+/*
+ * Currently we have no other way to determine the
+ * time for the stream flush other than keep track
+ * of the number of events and check it against
+ * threshold.
+ */
+static bool is_flush_needed(struct ctf_stream *cs)
+{
+	return cs->count >= STREAM_FLUSH_COUNT;
+}
+
 static int process_sample_event(struct perf_tool *tool,
 				union perf_event *_event __maybe_unused,
 				struct perf_sample *sample,
@@ -535,8 +552,13 @@ static int process_sample_event(struct perf_tool *tool,
 	}
 
 	cs = ctf_stream(cw, get_sample_cpu(cw, sample, evsel));
-	if (cs)
+	if (cs) {
+		if (is_flush_needed(cs))
+			ctf_stream__flush(cs);
+
+		cs->count++;
 		bt_ctf_stream_append_event(cs->stream, event);
+	}
 
 	bt_ctf_event_put(event);
 	return cs ? 0 : -1;
-- 
1.9.3


  parent reply	other threads:[~2014-12-11 15:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-11 15:12 [PATCHv2 0/8] perf tools: Add perf data CTF conversion Jiri Olsa
2014-12-11 15:12 ` [PATCH 1/8] perf tools: Add feature check for libbabeltrace Jiri Olsa
2014-12-11 15:12 ` [PATCH 2/8] perf tools: Add new perf data command Jiri Olsa
2014-12-11 15:12 ` [PATCH 3/8] perf data: Add perf data to CTF conversion support Jiri Olsa
2014-12-11 17:06   ` David Ahern
2014-12-11 17:15     ` Jiri Olsa
2014-12-11 15:12 ` [PATCH 4/8] perf data: Add a 'perf' prefix to the generic fields Jiri Olsa
2014-12-11 18:55   ` David Ahern
2014-12-11 18:57     ` Sebastian Andrzej Siewior
2014-12-11 19:47       ` David Ahern
2014-12-11 20:22         ` Sebastian Andrzej Siewior
2014-12-11 15:12 ` [PATCH 5/8] perf data: Add tracepoint events fields CTF conversion support Jiri Olsa
2014-12-11 15:12 ` [PATCH 6/8] perf data: Switch to multiple cpu stream files Jiri Olsa
2014-12-11 15:12 ` Jiri Olsa [this message]
2014-12-11 15:12 ` [PATCH 8/8] perf data: Add support for setting ordered_events queue size Jiri Olsa
2014-12-22 15:08 ` [PATCHv2 0/8] perf tools: Add perf data CTF conversion Jiri Olsa
2015-01-08 10:28   ` Jiri Olsa
2015-01-08 13:52     ` Namhyung Kim
2015-01-09 10:38       ` Jiri Olsa
2015-01-08 14:29 ` Peter Zijlstra
2015-01-08 14:38   ` Jiri Olsa
2015-01-09  9:58     ` Peter Zijlstra
2015-01-09 10:03       ` Jiri Olsa
  -- strict thread matches above, loose matches on Subject: below --
2015-01-15 16:15 [PATCHv3 " Jiri Olsa
2015-01-15 16:15 ` [PATCH 7/8] perf data: Enable stream flush within processing Jiri Olsa
2014-12-03 16:23 [PATCH 0/8] perf tools: Add perf data CTF conversion Jiri Olsa
2014-12-03 16:24 ` [PATCH 7/8] perf data: Enable stream flush within processing Jiri Olsa

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=1418310749-22267-8-git-send-email-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=acme@redhat.com \
    --cc=bigeasy@linutronix.de \
    --cc=dsahern@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=jgalar@efficios.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@gmail.com \
    --cc=paulus@samba.org \
    --cc=peterz@infradead.org \
    --cc=tzanussi@gmail.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 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.