The Babeltrace project provides trace read and write libraries, as well as a trace converter. Plugins can be created for any trace format to allow its conversion to/from another trace format.
C Python C++ M4 Shell Yacc Other
PSRCode and jgalar Fix live-comm: merge TCP socket write-write sequence in a single write
The live protocol implementation is often sending content
on TCP sockets in two separate writes. One to send a command header,
and the second one sending the command's payload. This was presumably
done under the assumption that it would not result in two separate
TCP packets being sent on the network (or that it would not matter).

Delayed ACK-induced delays were observed [1] on the second write of the
"write header, write payload" sequence and result in problematic
latency build-ups for live clients connected to moderately/highly
active sessions.

Fundamentally, this problem arises due to the combination of Nagle's
algorithm and the delayed ACK mechanism which make write-write-read
sequences on TCP sockets problematic as near-constant latency is
expected when clients can keep-up with the event production rate.

In such a write-write-read sequence, the second write is held up until
the first write is acknowledged (TCP ACK). The solution implemented
by this patch bundles the writes into a single one [2].

[1] https://github.com/tbricks/wireshark-lttng-plugin
Basic Wireshark dissector for lttng-live by Anto Smyk from Itiviti
[2] https://lists.freebsd.org/pipermail/freebsd-net/2006-January/009527.html

Reported-by: Anton Smyk <anton.smyk@itiviti.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Latest commit bdcbd52 Nov 24, 2017
Permalink
Failed to load latest commit information.
bindings Implement __repr__ instead of __str__ for python Value Dec 2, 2017
cli Fix: wrong type specifier used with long argument May 18, 2018
common Fix: common: improve color support handling Sep 15, 2017
compat Port: Add dummy symbol for macOS linker Jul 19, 2017
config Add tap-driver.sh from automake Apr 29, 2016
doc babeltrace-filter.lttng-utils.debug-info(7): fix LTTng prerequisites Dec 6, 2017
extras Add extras/gen-babeltrace-h.py: include/babeltrace/babeltrace.h gener… May 28, 2017
include Add missing clock.h compatiblity header under ctf-ir Jan 30, 2018
lib Fix: stream.c: autopopulate timestamp fields even when not mapped to CC Nov 23, 2017
logging Fix: global logging symbols defined multiple times Aug 23, 2017
m4 Update autoconf archive macros Jul 17, 2017
plugins Fix live-comm: merge TCP socket write-write sequence in a single write May 31, 2018
python-plugin-provider Port: no sighandlers on Windows Nov 2, 2017
tests Fix: Use bash for all test scripts Mar 26, 2018
.gitignore Add basic flt.lttng-utils.debug-info tests Nov 2, 2017
CONTRIBUTING.adoc CONTRIBUTING.adoc: add step to add env. var. name to cli/babeltrace.c Sep 15, 2017
ChangeLog Version 1.2.0 Feb 28, 2014
CodingStyle Add PEP8 style guide requirement to the CodingStyle Oct 12, 2014
LICENSE Add python tap runner to the tree Aug 29, 2017
Makefile.am Add CONTRIBUTING.adoc Sep 15, 2017
README Set the minimal version of elfutils to 0.154 Apr 28, 2016
babeltrace-ctf.pc.in Put the libbabeltrace-ctf specific parts of babeltrace.pc into a babe… Aug 15, 2013
babeltrace.pc.in Put the libbabeltrace-ctf specific parts of babeltrace.pc into a babe… Aug 15, 2013
bootstrap bootstrap: Standardize on autoreconf -vi May 13, 2016
configure.ac Add basic flt.lttng-utils.debug-info tests Nov 2, 2017
gpl-2.0.txt Common Trace Format - initial commit Sep 26, 2010
lgpl-2.1.txt Document that list.h is LGPLv2.1, but entirely trivial Oct 2, 2012
mit-license.txt Cleanup: Remove whitespace at EOL from mit-license.txt Dec 5, 2012
std-ext-lib.txt Common Trace Format - initial commit Sep 26, 2010

README

BabelTrace - Trace Format Babel Tower

This project provides trace read and write libraries, as well as a trace
converter. A plugin can be created for any trace format to allow its conversion
to/from another trace format.

The main format expected to be converted to/from is the Common Trace
Format (CTF). The latest version of the CTF specification can be found at:

  git tree:   git://git.efficios.com/ctf.git
  gitweb:     http://git.efficios.com/?p=ctf.git

The CE Workgroup of the Linux Foundation, Ericsson, and EfficiOS have
sponsored this work.

The current maintainers are:
  Jérémie Galarneau <jeremie.galarneau@efficios.com>
  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>

Questions should be addressed to this mailing list:
  lttng-dev@lists.lttng.org


BUILDING
--------

	./bootstrap (skip if using tarball)
	./configure
	make
	make install
	ldconfig


DEPENDENCIES
------------

To compile Babeltrace, you will need:

	gcc 3.2 or better
	libc6 development librairies
	  (Debian : libc6, libc6-dev)
	  (Fedora : glibc, glibc)
	glib 2.22 or better development libraries
	  (Debian : libglib2.0-0, libglib2.0-dev)
	  (Fedora : glib2, glib2-devel)
	uuid development libraries
	  (Debian : uuid-dev)
	  (Fedora : uuid-devel)
	libpopt >= 1.13 development libraries
	  (Debian : libpopt-dev)
	  (Fedora : popt)
	elfutils >= 0.154 development libraries (optional)
	  (Debian : libelf-dev, libdw-dev)
	  (Fedora : elfutils-devel, elfutils-libelf-devel)
	python headers (optional)
	  (Debian/Ubuntu : python3-dev)
	swig >= 2.0 (optional)
	  (Debian/Ubuntu : swig2.0)
	python >= 3.0 (optional)
	  (Debian/Ubuntu : python3)
	sphinx >= 1.2 (optional)
	  (Debian/Ubuntu : python3-sphinx)

  If you want Python bindings, run ./configure --enable-python-bindings.
  Please note that some distributions will need the following
  environment variables set before running configure:

    export PYTHON="python3"
    export PYTHON_CONFIG="/usr/bin/python3-config"

For developers using the git tree:

This source tree is based on the autotools suite from GNU to simplify
portability. Here are some things you should have on your system in order to
compile the git repository tree :

- GNU autotools (automake >=1.10, autoconf >=2.50, autoheader >=2.50)
  (make sure your system wide "automake" points to a recent version!)
- GNU Libtool >=2.2
  (for more information, go to http://www.gnu.org/software/autoconf/)
- Flex >=2.5.35.
- Bison >=2.4.

If you get the tree from the repository, you will need to use the "bootstrap"
script in the root of the tree. It calls all the GNU tools needed to prepare the
tree configuration.

Running "make check": bash is required.