lkml.org 
[lkml]   [2014]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v0 04/71] itrace: Infrastructure for instruction flow tracing units
    On Tue, Jan 07, 2014 at 01:52:31AM +0100, Andi Kleen wrote:
    > > > Also of course it requires disabling/enabling PT explicitly for
    > > > every perf message, which is slow. So you add at least 2*WRMSR cost
    > > > (thousands of cycles).
    > >
    > > That's just dumb, no flush the entire PT buffer into a few large
    > > records.
    >
    > How would that work?
    >
    > You mean a separate buffer and then copy or map?
    >
    > ------
    >
    > Also here are some more problems with interleaving:
    >
    > A common PT config is to just run it as a ring buffer in the background
    > and only take the data out when something happens (sample, crash etc.)
    >
    > But the side band still needs to be logged and at arbitary times.
    >
    > So the PT wrapping will happen much more often than the perf wrapping.
    >
    > If you interleave you may actually end up with lots of small rings
    > in a single buffer, unless you stop every time the buffer fills up
    > (which would add a lot more overhead)
    >
    > I suppose it could be somehow parsed, but it would very different
    > from what perf does today.

    Thinking about it more it's likely very hard to parse. Dropping instructions is
    fine, dropping perf metadata is not (or only as last resort).

    If we miss a MMAP we may never be able to parse that code region.
    If we miss a context switch we may be also completely lost until the
    next switch.

    That means PT couldn't overwrite perf metadata normally.

    So you could easily get into situations where the interleaved PT buffer
    is between two perf metadata statements and ends up really small, while
    large other parts of the buffer are unused.

    The only way around it would be likely to move entries around -- to
    garbage collect so to say -- but doing that non-blocking from a NMI will be
    challenging.

    With the separate buffers we don't have any of these problems.

    -Andi


    \
     
     \ /
      Last update: 2014-01-07 02:41    [W:4.341 / U:0.560 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site