public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
From: Arkady <arkady.miasnikov@gmail.com>
To: David Smith <dsmith@redhat.com>
Cc: systemtap@sourceware.org
Subject: Re: Integration of the shared memory based transport in the SystemTap
Date: Wed, 12 Jul 2017 13:03:00 -0000	[thread overview]
Message-ID: <CANA-60qMQzpJD1nE4vsBJNtT2n_=VNbVvA_gvK_Rp9rOJgTA7w@mail.gmail.com> (raw)
In-Reply-To: <CAKFOr-YzjT7VfU9HR7kJ3n6AW4TmE2m7wyaYPzseT-9L02f8eg@mail.gmail.com>

On Wed, Jul 12, 2017 at 3:35 PM, David Smith <dsmith@redhat.com> wrote:
> I wonder if you wouldn't take a look at the existing ring buffer code
> in the transport. We had it working at one point, but then never quite
> pushed it over the finish line. I'm sure it needs some updates for
> kernel changes. The advantage here would be that we're using an
> existing kernel interface instead of rolling our own. Plus, a good bit
> of the work has been done to integrate it with systemtap already. Look
> in runtime/transport/ring_buffer.c.


I am trying to leverage the hardware as much as possible and
avoid introducing layers of abstraction. See, for example,
"allocation" function
in https://gist.github.com/larytet/4977626fd87817414c7a88dd63e7855d#file-shared_memory-h-L33

The whole procedure is 120 lines and most of the time about 40
lines are getting executed.This includes debug counters in all
branches. My implementation is data cache friendly, and
remains space efficient while keeping data structures of
different size. In my application the average event size is
150bytes and maximum event size is ~4K.

In the performance tests writing to the FIFO adds less than 5%
to the probe overhead (likely well below 20nano per allocation).

The con is that my approach is not very generic and will not fit
any application.

>
> On Tue, Jul 11, 2017 at 1:59 AM, Arkady <arkady.miasnikov@gmail.com> wrote:
>> Hi,
>>
>> I have an implementation of shared memory which is, hopefully, rather
>> close to the production grade. The idea is that a probe allocates a
>> small chunk from the FIFO, fills the chunk with the data, "commits"
>> the chunk. The FIFO can be lockless if there is a FIFO per core.

      reply	other threads:[~2017-07-12 13:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-11  6:59 Arkady
2017-07-12 12:35 ` David Smith
2017-07-12 13:03   ` Arkady [this message]

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='CANA-60qMQzpJD1nE4vsBJNtT2n_=VNbVvA_gvK_Rp9rOJgTA7w@mail.gmail.com' \
    --to=arkady.miasnikov@gmail.com \
    --cc=dsmith@redhat.com \
    --cc=systemtap@sourceware.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).