qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Lluís <xscript@gmx.net>
To: qemu-devel@nongnu.org
Cc: stefanha@gmail.com, chouteau@adacore.com
Subject: [Qemu-devel] [PATCH v2 07/11] trace-state: always use the "nop" backend on events with the "disable" keyword
Date: Wed, 06 Apr 2011 20:34:43 +0200	[thread overview]
Message-ID: <20110406183443.22854.56246.stgit@ginnungagap.bsc.es> (raw)
In-Reply-To: <20110406183341.22854.93929.stgit@ginnungagap.bsc.es>

Any event with the keyword/property "disable" generates an empty trace event
using the "nop" backend, regardless of the current backend.

Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 docs/tracing.txt  |   25 +++++++++++++++----------
 scripts/tracetool |   15 ++-------------
 2 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/docs/tracing.txt b/docs/tracing.txt
index a9fd85b..9138dca 100644
--- a/docs/tracing.txt
+++ b/docs/tracing.txt
@@ -12,15 +12,11 @@ for debugging, profiling, and observing execution.
     ./configure --trace-backend=simple
     make
 
-2. Enable trace events you are interested in:
-
-    $EDITOR trace-events  # remove "disable" from events you want
-
-3. Run the virtual machine to produce a trace file:
+2. Run the virtual machine to produce a trace file:
 
     qemu ... # your normal QEMU invocation
 
-4. Pretty-print the binary trace file:
+3. Pretty-print the binary trace file:
 
     ./simpletrace.py trace-events trace-*
 
@@ -98,10 +94,11 @@ portability macros, ensure they are preceded and followed by double quotes:
 4. Name trace events after their function.  If there are multiple trace events
    in one function, append a unique distinguisher at the end of the name.
 
-5. Declare trace events with the "disable" property.  Some trace events can
-   produce a lot of output and users are typically only interested in a subset
-   of trace events.  Marking trace events disabled by default saves the user
-   from having to manually disable noisy trace events.
+5. If specific trace events are going to be called a huge number of times, this
+   might have a noticeable performance impact even when the trace events are
+   programmatically disabled. In this case you should declare the trace event
+   with the "disable" property, which will effectively disable it at compile
+   time (using the "nop" backend).
 
 == Trace backends ==
 
@@ -126,6 +123,9 @@ The "nop" backend generates empty trace event functions so that the compiler
 can optimize out trace events completely.  This is the default and imposes no
 performance penalty.
 
+Note that regardless of the selected trace backend, events with the "disable"
+property will be generated with the "nop" backend.
+
 === Stderr ===
 
 The "stderr" backend sends trace events directly to standard error.  This
@@ -134,6 +134,11 @@ effectively turns trace events into debug printfs.
 This is the simplest backend and can be used together with existing code that
 uses DPRINTF().
 
+Note that with this backend trace events cannot be programmatically
+enabled/disabled. Thus, in order to trim down the amount of output and the
+performance impact of tracing, you might want to add the "disable" property in
+the "trace-events" file for those events you are not interested in.
+
 === Simpletrace ===
 
 The "simple" backend supports common use cases and comes as part of the QEMU
diff --git a/scripts/tracetool b/scripts/tracetool
index 6d8ead2..7506776 100755
--- a/scripts/tracetool
+++ b/scripts/tracetool
@@ -506,21 +506,10 @@ convert()
         # Skip comments and empty lines
         test -z "${str%%#*}" && continue
 
+        echo
         # Process the line.  The nop backend handles disabled lines.
-        disable="0"
         if has_property "$str" "disable"; then
-            disable="1"
-        fi
-        echo
-        if [ "$disable" = "1" ]; then
-            # Pass the disabled state as an arg for the simple
-            # or DTrace backends which handle it dynamically.
-            # For all other backends, call lineto$1_nop()
-            if [ $backend = "simple" -o "$backend" = "dtrace" ]; then
-                "$process_line" "$str"
-            else
-                "lineto$1_nop" "${str##disable }"
-            fi
+            "lineto$1_nop" "$str"
         else
             "$process_line" "$str"
         fi

  parent reply	other threads:[~2011-04-06 18:35 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-06 18:33 [Qemu-devel] [RFC][PATCH v2 00/11] trace-state: make the behaviour of "disable" consistent across all backends Lluís
2011-04-06 18:33 ` [Qemu-devel] [PATCH v2 01/11] minor whitespace/indentation fixes Lluís
2011-04-23 14:19   ` Stefan Hajnoczi
2011-04-26 10:00     ` Markus Armbruster
2011-04-06 18:33 ` [Qemu-devel] [PATCH v2 02/11] docs/tracing.txt: minor documentation fixes Lluís
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 03/11] trace: [ust] fix generation of 'trace.c' on events without args Lluís
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 04/11] trace: [trace-events] fix print formats in some events Lluís
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 05/11] trace: [simple] minor code fixes on conditional compilation Lluís
2011-04-23 14:20   ` Stefan Hajnoczi
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 06/11] trace: generalize the "property" concept in the trace-events file Lluís
2011-04-23 14:22   ` Stefan Hajnoczi
2011-04-06 18:34 ` Lluís [this message]
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 08/11] trace-state: [simple] disable all trace points by default Lluís
2011-04-06 18:34 ` [Qemu-devel] [PATCH v2 09/11] trace-state: [simple] add "-trace events" argument to control initial state Lluís
2011-04-06 18:35 ` [Qemu-devel] [PATCH v2 10/11] trace-state: [stderr] add support for dynamically enabling/disabling events Lluís
2011-04-23 14:31   ` Stefan Hajnoczi
2011-04-24  6:24     ` Paolo Bonzini
2011-04-24  9:33       ` Stefan Hajnoczi
2011-04-25 10:27         ` Lluís
2011-04-25 18:10           ` Paolo Bonzini
2011-04-26 12:30             ` Fabien Chouteau
2011-04-26 12:38               ` Stefan Hajnoczi
2011-04-26 12:59                 ` Paolo Bonzini
2011-04-26 14:01                 ` Lluís
2011-04-06 18:35 ` [Qemu-devel] [PATCH v2 11/11] trace: enable all events Lluís
2011-04-23 14:45 ` [Qemu-devel] [RFC][PATCH v2 00/11] trace-state: make the behaviour of "disable" consistent across all backends Stefan Hajnoczi

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=20110406183443.22854.56246.stgit@ginnungagap.bsc.es \
    --to=xscript@gmx.net \
    --cc=chouteau@adacore.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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 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).