Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1274424

[PATCH 00/11] trace-cmd: make libtracecmd a linkable object

From Josef Bacik <jbacik@fb.com>
Newsgroups linux.kernel
Subject [PATCH 00/11] trace-cmd: make libtracecmd a linkable object
Date 2015-11-20 22:00 +0100
Message-ID <qx0WJ-3Qz-3@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


We use trace-cmd pretty extensively inside of Facebook for various things, such
as live gathering of statistics.  Currently this involves launching trace-cmd to
record data and then processing the information afterwards.  This makes
collection kind of a pain and doesn't allow us to catch longterm trends.  What
we really want to do is use the trace stream infrastructure to do live
collection of events without having to use disk space and rely on the recorder
to not crash.

The other problem we have is that any time we want to create a new tool we
basically have to add it to our build of trace-cmd and deploy an entirely new
trace-cmd package.  This is not super great as we want to keep the amount of
modifications to the core trace-cmd tool to a minimum and would rather just
write our tools on the outside and link against libtracecmd.

Enter these patches.  libtracecmd is already created to be linked against by the
internal trace-cmd tools, but isn't actually able to be linked against because
of various internal dependancies.  These patches take a pass at killing some of
these interdependancies and adding global functions for external tools to link
against.  I have ported one of our tools over to link against this library and
it works well.  If it would help I can post the tool as well as an example.

I made the explicit decision to do as little as possible when decoupling some of
the internal dependancies.  Specifically libtracecmd pulls in trace-record, and
that is where the bulk of the thread management stuff is for trace-stream as
well as the buffer_instance and event enablement code.  It got pretty hairy
trying to tease all of these bits out into their own things so instead I just
pulled out the dependancies on trace-profile and trace-read so that libtracecmd
didn't end up looking exactly like trace-cmd.  Thanks,

Josef
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/11] trace-cmd: make libtracecmd a linkable object Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 04/11] trace-cmd: add global functions for live tracing Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 06/11] trace-cmd: add helpers for starting and stopping threads Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 10/11] trace-cmd: add a helper function for stream polling Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 09/11] trace-cmd: disentangle profile and read from record Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 01/11] trace-cmd: add install_libs target to trace-cmd Josef Bacik <jbacik@fb.com> - 2015-11-20 22:00 +0100
  [PATCH 03/11] trace-cmd: add a function to create a top instance Josef Bacik <jbacik@fb.com> - 2015-11-20 22:10 +0100

csiph-web