• Jiri Olsa's avatar
    perf session: Try to read pipe data from file · 14d3d540
    Jiri Olsa authored
    Ian came with the idea of having support to read the pipe data also from
    file. Currently pipe mode files fail like:
    
      $ perf record -o - sleep 1 > /tmp/perf.pipe.data
      $ perf report -i /tmp/perf.pipe.data
      incompatible file format (rerun with -v to learn more)
    
    This patch adds the support to do that by trying the pipe header first,
    and if its successfully detected, switching the perf data to pipe mode.
    
    Committer testing:
    
      # ls
      # perf record -a -o - sleep 1 > /tmp/perf.pipe.data
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.000 MB - ]
      # ls
      # perf report -i /tmp/perf.pipe.data | head -25
      # To display the perf.data header info, please use --header/--header-only options.
      #
      #
      # Total Lost Samples: 0
      #
      # Samples: 511  of event 'cycles'
      # Event count (approx.): 178447276
      #
      # Overhead  Command   Shared Object      Symbol
      # ........  ........  .................  ...........................................................................................
      #
          65.49%  swapper   [kernel.kallsyms]  [k] native_safe_halt
           6.45%  chromium  libblink_core.so   [.] blink::SelectorChecker::CheckOne
           4.08%  chromium  libblink_core.so   [.] blink::SelectorQuery::ExecuteForTraverseRoot<blink::AllElementsSelectorQueryTrait>
           2.25%  chromium  libblink_core.so   [.] blink::SelectorQuery::FindTraverseRootsAndExecute<blink::AllElementsSelectorQueryTrait>
           2.11%  chromium  libblink_core.so   [.] blink::SelectorChecker::MatchSelector
           1.91%  chromium  libblink_core.so   [.] blink::Node::OwnerShadowHost
           1.31%  chromium  libblink_core.so   [.] blink::Node::parentNode@plt
           1.22%  chromium  libblink_core.so   [.] blink::Node::parentNode
           0.59%  chromium  libblink_core.so   [.] blink::AnyAttributeMatches
           0.58%  chromium  libv8.so           [.] v8::internal::GlobalHandles::Create
           0.58%  chromium  libblink_core.so   [.] blink::NodeTraversal::NextAncestorSibling
           0.55%  chromium  libv8.so           [.] v8::internal::RegExpGlobalCache::RegExpGlobalCache
           0.55%  chromium  libblink_core.so   [.] blink::Node::ContainingShadowRoot
           0.55%  chromium  libblink_core.so   [.] blink::NodeTraversal::NextAncestorSibling@plt
      #
    Original-patch-by: default avatarIan Rogers <irogers@google.com>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Khuong <pvk@pvk.ca>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200507095024.2789147-4-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    14d3d540
header.c 86.2 KB