[roll] Roll fuchsia [benchmarks] Tracing perf tests: run tracee program as a component

This removes cases where fuchsia_microbenchmarks is run via the
command line.

Switch from using the "trace" command line program to using the Dart
interfaces for setting up tracing.  This makes it easier to save the
trace results in Infra builds.  It also makes it easier to check the
trace, so we add some checks to ensure that the traces contain the
expected trace events.

Split out a function from runTestComponent() so that it can be reused
for this.

Note that we're changing from "--buffering-mode=circular" to the
default buffering mode (oneshot).  This is partly because the Dart
interface doesn't allow setting the buffering mode yet, but also
because setting it to circular is neither necessary nor useful now
that we're checking that the expected trace events aren't lost.

The userland trace buffer is unlikely to overflow for this test since
we're outputting only a few events.  (However, the kernel trace buffer
is more likely to overflow since it captures events for unrelated
background processes.)

I ran this change through perfcompare as a further check that I wasn't
accidentally changing how tracing is enabled for these metrics.  It
showed some small changes that might be the result of enabling tracing
by a different route, causing different transient background activity:

 Test case                                                          Improve/regress?  Factor change  Mean before        Mean after
 -----------------------------------------------------------------  ----------------  -------------  -----------------  -----------------
 fuchsia.microbenchmarks.tracing: Tracing/BeginEndDurationEvent     slower            1.083-1.254    233.2 +/- 1.6 ns   272 +/- 18 ns
 fuchsia.microbenchmarks.tracing: Tracing/InstantEvent              faster            0.767-0.983    151 +/- 11 ns      131.0 +/- 6.9 ns
 fuchsia.microbenchmarks.tracing_categories_disabled: Syscall/Null  slower            1.047-1.086    80.27 +/- 0.69 ns  85.56 +/- 0.82 ns

Original-Bug: 103374
Test: fx set terminal.x64 --release
  + fx test --e2e host_x64/microbenchmarks_test
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/723163
Original-Revision: 23de0f643f94b399ab566d0ec361a813b0f6d5fe
GitOrigin-RevId: 9002a4dd426383b134f16c06b00d806a94efe075
Change-Id: I518dcc325f3f5be7c7587967747a4060fd4dc30d
1 file changed
tree: f61ef1f21a76d55d677ebd8ae249f671f95572ff
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.