diff options
author | Stefan Sauer <ensonic@users.sf.net> | 2014-10-16 10:42:05 +0200 |
---|---|---|
committer | Stefan Sauer <ensonic@users.sf.net> | 2015-10-05 20:59:39 +0200 |
commit | 26af78b71f923bb6d29c7347b4ea2d6b2b946091 (patch) | |
tree | 2915428b495311a283067fd791df984eb7f7319a /docs/design/draft-tracing.txt | |
parent | e5eb05741bc2d1cfd9e4b09cd0e8e2b484c9ee13 (diff) |
tracing: update docs
Diffstat (limited to 'docs/design/draft-tracing.txt')
-rw-r--r-- | docs/design/draft-tracing.txt | 56 |
1 files changed, 37 insertions, 19 deletions
diff --git a/docs/design/draft-tracing.txt b/docs/design/draft-tracing.txt index 34ba4bff3e..2011dcfc32 100644 --- a/docs/design/draft-tracing.txt +++ b/docs/design/draft-tracing.txt @@ -178,9 +178,13 @@ A few ideas that are not yet in the above spec: - the stats tracer logs 'new-element' and 'new-pad' messages - they add a unique 'ix' to each instance as the memory ptr can be reused for new instances, the data is attached to the objects as qdata - - the latency tracer would like to also ref this metadata -- right now we log the classes as structures, it would be nice to add them to - the registry, so that gst-inspect can show them + - the latency tracer would like to also reference this metadata +- enums and flags are logged as comma separated string to not require the front- + ends to know the flag values (is that okay?) +- right now we log the classes as structures + - this is important so that the log is self contained + - it would be nice to add them to the registry, so that gst-inspect can show + them In addition to the above spec, each log event will contain a "ts" field as a G_TYPE_UINT64 to specify the time of the event. @@ -248,6 +252,12 @@ refcounts (not yet implemented) - just logging them outside of glib/gobject would still make it hard to detect issues though +opengl (not yet implemented) +------ +- upload/download times +- there is not hardware agnostic way to get e.g. memory usage info + (gl extensions) + User interfaces =============== @@ -293,27 +303,43 @@ Problems / Open items statements can be replaced by generic logging as shown in the log-tracer - add tools/gst-debug to extract a human readable debug log from the trace log + - we could maintain a list of log functions, where gst_tracer_log_trace() is + the default one. This way e.g. gst-validate could consume the traces + directly. - when hooking into a timer, should we just have some predefined intervals? - can we add a tracer module that registers the timer hook? then we could do GST_TRACER="timer(10ms);rusage" right now the tracer hooks are defined as an enum though. + - when connecting to a running app, we can't easily get the 'current' state if logging is using a socket, as past events are not explicitly stored, we could determine the current topology and emit events with GST_CLOCK_TIME_NONE as ts to indicate that the events are synthetic. +- we need stable ids for scopes (elements, pads) + - the address can be reused + - we can use gst_util_seqnum_next() + - something like gst_object_get_path_string() won't work as objects are + initially without parent + +- right now the tracer is enabled/disabled from configure with + --{enable,disable}-debug, we should probably add --{enable,disable}-tracer + although it is confusing with "--disable-trace disable tracing subsystem" + where we could at least change the doc-string to say "disable memory tracing + subsystem" + Try it ====== GST_DEBUG="GST_TRACER:7,GST_BUFFER*:7,GST_EVENT:7,GST_MESSAGE:7" GST_TRACE=log gst-launch-1.0 fakesrc num-buffers=10 ! fakesink - traces for buffer flow in TRACE level -GST_DEBUG="GST_TRACER:7" GST_TRACE="stats;rusage" gst-launch-1.0 2>trace.log fakesrc num-buffers=10 sizetype=fixed ! queue ! fakesink +GST_DEBUG="GST_TRACER:7" GST_TRACE="stats;rusage" GST_DEBUG_FILE=trace.log gst-launch-1.0 fakesrc num-buffers=10 sizetype=fixed ! queue ! fakesink gst-stats-1.0 trace.log - print some pipeline stats on exit -GST_DEBUG="GST_TRACER:7" GST_TRACE="stats;rusage" /usr/bin/gst-play-1.0 2>trace.log --interactive $HOME/Videos/movie.mp4 -./tools/gst-plot-traces.sh --format=png | gnuplot +GST_DEBUG="GST_TRACER:7" GST_TRACE="stats;rusage" GST_DEBUG_FILE=trace.log /usr/bin/gst-play-1.0 --interactive $HOME/Videos/movie.mp4 +./scripts/gst-plot-traces.sh --format=png | gnuplot eog trace.log.*.png - get ts, average-cpuload, current-cpuload, time and plot @@ -322,20 +348,12 @@ GST_DEBUG="GST_TRACER:7" GST_TRACE=latency gst-launch-1.0 audiotestsrc num-buffe Performance =========== -GST_DEBUG="GST_TRACER:7" GST_TRACE="stats;rusage" /usr/bin/gst-launch-1.0 2>trace.log playbin uri=file:///home/ensonic/Music/1.mp3 audio-sink="fakesink sync=false" -0:00:42.531147106 (GList) -0:00:09.273174008 (GQueue)! - -GST_DEBUG="GST_TRACER:7" GST_TRACE="rusage" /usr/bin/gst-launch-1.0 2>trace.log playbin uri=file:///home/ensonic/Music/1.mp3 audio-sink="fakesink sync=false" -0:00:07.388375834 - -GST_TRACE="rusage" /usr/bin/gst-launch-1.0 2>trace.log playbin uri=file:///home/ensonic/Music/1.mp3 audio-sink="fakesink sync=false" -0:00:01.691596186 - -/usr/bin/gst-launch-1.0 playbin uri=file:///home/ensonic/Music/1.mp3 audio-sink="fakesink sync=false" -0:00:00.788497775 +run ./tests/benchmarks/tracing.sh <tracer(s)> <media> egrep -c "(proc|thread)-rusage" trace.log 658618 +grep -c "gst_tracer_log_trace" trace.log +823351 + +- we can optimize most of it by using quarks in structures or eventually avoid structures totally -- we can optimize most with using quarks in structures or eventually avoid structures totally |