linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tom Zanussi <tom.zanussi@linux.intel.com>
To: rostedt@goodmis.org
Cc: tglx@linutronix.de, mhiramat@kernel.org, namhyung@kernel.org,
	vedang.patel@intel.com, bigeasy@linutronix.de,
	joel.opensrc@gmail.com, joelaf@google.com,
	mathieu.desnoyers@efficios.com, baohong.liu@intel.com,
	rajvi.jingar@intel.com, julia@ni.com, fengguang.wu@intel.com,
	linux-kernel@vger.kernel.org, linux-rt-users@vger.kernel.org,
	Tom Zanussi <tom.zanussi@linux.intel.com>
Subject: [PATCH v7 07/37] tracing: Add timestamp_mode trace file
Date: Wed,  6 Dec 2017 16:37:48 -0600	[thread overview]
Message-ID: <e8e375238bcca16dc806a3ab9537dc9a8436706a.1512593081.git.tom.zanussi@linux.intel.com> (raw)
In-Reply-To: <cover.1512593081.git.tom.zanussi@linux.intel.com>
In-Reply-To: <cover.1512593081.git.tom.zanussi@linux.intel.com>

Add a new option flag indicating whether or not the ring buffer is in
'absolute timestamp' mode.

Currently this is only set/unset by hist triggers that make use of a
common_timestamp.  As such, there's no reason to make this writeable
for users - its purpose is only to allow users to determine
unequivocally whether or not the ring buffer is in that mode (although
absolute timestamps can coexist with the normal delta timestamps, when
the ring buffer is in absolute mode, timestamps written while absolute
mode is in effect take up more space in the buffer, and are not as
efficient).

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
---
 Documentation/trace/ftrace.txt | 24 +++++++++++++++++++++
 kernel/trace/trace.c           | 47 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)

diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index d4601df..54213e5 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -539,6 +539,30 @@ of ftrace. Here is a list of some of the key files:
 
 	See events.txt for more information.
 
+  timestamp_mode:
+
+	Certain tracers may change the timestamp mode used when
+	logging trace events into the event buffer.  Events with
+	different modes can coexist within a buffer but the mode in
+	effect when an event is logged determines which timestamp mode
+	is used for that event.  The default timestamp mode is
+	'delta'.
+
+	Usual timestamp modes for tracing:
+
+	  # cat timestamp_mode
+	  [delta] absolute
+
+	  The timestamp mode with the square brackets around it is the
+	  one in effect.
+
+	  delta: Default timestamp mode - timestamp is a delta against
+	         a per-buffer timestamp.
+
+	  absolute: The timestamp is a full timestamp, not a delta
+                 against some other value.  As such it takes up more
+                 space and is less efficient.
+
   hwlat_detector:
 
 	Directory for the Hardware Latency Detector.
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 459924f..da604fa 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -4531,6 +4531,9 @@ static int tracing_trace_options_open(struct inode *inode, struct file *file)
 #ifdef CONFIG_X86_64
 	"     x86-tsc:   TSC cycle counter\n"
 #endif
+	"\n  timestamp_mode\t-view the mode used to timestamp events\n"
+	"       delta:   Delta difference against a buffer-wide timestamp\n"
+	"    absolute:   Absolute (standalone) timestamp\n"
 	"\n  trace_marker\t\t- Writes into this file writes into the kernel buffer\n"
 	"\n  trace_marker_raw\t\t- Writes into this file writes binary data into the kernel buffer\n"
 	"  tracing_cpumask\t- Limit which CPUs to trace\n"
@@ -6298,6 +6301,40 @@ static int tracing_clock_open(struct inode *inode, struct file *file)
 	return ret;
 }
 
+static int tracing_time_stamp_mode_show(struct seq_file *m, void *v)
+{
+	struct trace_array *tr = m->private;
+
+	mutex_lock(&trace_types_lock);
+
+	if (ring_buffer_time_stamp_abs(tr->trace_buffer.buffer))
+		seq_puts(m, "delta [absolute]\n");
+	else
+		seq_puts(m, "[delta] absolute\n");
+
+	mutex_unlock(&trace_types_lock);
+
+	return 0;
+}
+
+static int tracing_time_stamp_mode_open(struct inode *inode, struct file *file)
+{
+	struct trace_array *tr = inode->i_private;
+	int ret;
+
+	if (tracing_disabled)
+		return -ENODEV;
+
+	if (trace_array_get(tr))
+		return -ENODEV;
+
+	ret = single_open(file, tracing_time_stamp_mode_show, inode->i_private);
+	if (ret < 0)
+		trace_array_put(tr);
+
+	return ret;
+}
+
 int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs)
 {
 	int ret = 0;
@@ -6576,6 +6613,13 @@ static int snapshot_raw_open(struct inode *inode, struct file *filp)
 	.write		= tracing_clock_write,
 };
 
+static const struct file_operations trace_time_stamp_mode_fops = {
+	.open		= tracing_time_stamp_mode_open,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= tracing_single_release_tr,
+};
+
 #ifdef CONFIG_TRACER_SNAPSHOT
 static const struct file_operations snapshot_fops = {
 	.open		= tracing_snapshot_open,
@@ -7903,6 +7947,9 @@ static __init void create_trace_instances(struct dentry *d_tracer)
 	trace_create_file("tracing_on", 0644, d_tracer,
 			  tr, &rb_simple_fops);
 
+	trace_create_file("timestamp_mode", 0444, d_tracer, tr,
+			  &trace_time_stamp_mode_fops);
+
 	create_trace_options_dir(tr);
 
 #if defined(CONFIG_TRACER_MAX_TRACE) || defined(CONFIG_HWLAT_TRACER)
-- 
1.9.3

  parent reply	other threads:[~2017-12-06 22:38 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-06 22:37 [PATCH v7 00/37] tracing: Inter-event (e.g. latency) support Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 01/37] tracing: Move hist trigger Documentation to histogram.txt Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 02/37] tracing: Add Documentation for log2 modifier Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 03/37] tracing: Add support to detect and avoid duplicates Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 04/37] tracing: Remove code which merges duplicates Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 05/37] ring-buffer: Add interface for setting absolute time stamps Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 06/37] ring-buffer: Redefine the unimplemented RINGBUF_TYPE_TIME_STAMP Tom Zanussi
2017-12-06 22:37 ` Tom Zanussi [this message]
2017-12-06 22:37 ` [PATCH v7 08/37] tracing: Give event triggers access to ring_buffer_event Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 09/37] tracing: Add ring buffer event param to hist field functions Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 10/37] tracing: Break out hist trigger assignment parsing Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 11/37] tracing: Add hist trigger timestamp support Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 12/37] tracing: Add per-element variable support to tracing_map Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 13/37] tracing: Add hist_data member to hist_field Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 14/37] tracing: Add usecs modifier for hist trigger timestamps Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 15/37] tracing: Add variable support to hist triggers Tom Zanussi
2017-12-08 13:02   ` Namhyung Kim
2017-12-08 19:54     ` Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 16/37] tracing: Account for variables in named trigger compatibility Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 17/37] tracing: Move get_hist_field_flags() Tom Zanussi
2017-12-06 22:37 ` [PATCH v7 18/37] tracing: Add simple expression support to hist triggers Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 19/37] tracing: Generalize per-element hist trigger data Tom Zanussi
2017-12-08 13:06   ` Namhyung Kim
2017-12-08 19:56     ` Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 20/37] tracing: Pass tracing_map_elt to hist_field accessor functions Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 21/37] tracing: Add hist_field 'type' field Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 22/37] tracing: Add variable reference handling to hist triggers Tom Zanussi
2017-12-11 15:17   ` Namhyung Kim
2017-12-11 17:53     ` Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 23/37] tracing: Add hist trigger action hook Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 24/37] tracing: Add support for 'synthetic' events Tom Zanussi
2017-12-12 14:42   ` Namhyung Kim
2017-12-12 16:07     ` Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 25/37] tracing: Add support for 'field variables' Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 26/37] tracing: Add 'onmatch' hist trigger action support Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 27/37] tracing: Add 'onmax' " Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 28/37] tracing: Allow whitespace to surround hist trigger filter Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 29/37] tracing: Add cpu field for hist triggers Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 30/37] tracing: Add hist trigger support for variable reference aliases Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 31/37] tracing: Add 'last error' error facility for hist triggers Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 32/37] tracing: Add inter-event hist trigger Documentation Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 33/37] tracing: Make tracing_set_clock() non-static Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 34/37] tracing: Add a clock attribute for hist triggers Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 35/37] tracing: Increase trace_recursive_lock() limit for synthetic events Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 36/37] tracing: Add inter-event blurb to HIST_TRIGGERS config option Tom Zanussi
2017-12-06 22:38 ` [PATCH v7 37/37] selftests: ftrace: Add inter-event hist triggers testcases Tom Zanussi

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=e8e375238bcca16dc806a3ab9537dc9a8436706a.1512593081.git.tom.zanussi@linux.intel.com \
    --to=tom.zanussi@linux.intel.com \
    --cc=baohong.liu@intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=fengguang.wu@intel.com \
    --cc=joel.opensrc@gmail.com \
    --cc=joelaf@google.com \
    --cc=julia@ni.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=rajvi.jingar@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vedang.patel@intel.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 NNTP newsgroup(s).