npm

Need private packages and team management tools?Check out npm Orgs. »

tracerbench

3.0.6 • Public • Published

TracerBench: Automated Chrome Tracing For Benchmarking

Build Status Version License

TracerBench Core

https://github.com/TracerBench/tracerbench/blob/master/README.md

Usage

$ npm install -g tracerbench
$ tracerbench COMMAND
running command...
$ tracerbench (-v|--version|version)
tracerbench/3.0.6 darwin-x64 node-v10.16.3
$ tracerbench --help [COMMAND]
USAGE
  $ tracerbench COMMAND
...

Optional Config

The optional existance of a "tbconfig.json" file in the project root will be consumed by TracerBench and specifies default command flag options. Please note this file is optional, however is strongly recommended as this drastically speeds up running TracerBench tests succinctly Example:

{
  "$schema": "https://raw.githubusercontent.com/TracerBench/tracerbench/master/packages/cli/tb-schema.json",
  // the title of the report pdf file
  "plotTitle": "tbconfig_base file",
  "tbResultsFolder": "../tracerbench-results",
  "controlURL": "https://www.tracerbench.com/",
  "experimentURL": "https://www.tracerbench.com/",
  "url": "https://www.tracerbench.com/",
  "tracingLocationSearch": "?tracing",
  "regressionThreshold": "-100ms",
  "appName": "tracerbench",
  "cpuThrottleRate": 1,
  "network": "fast-3g",
  "emulateDevice": "iphone-x",
  "fidelity": "high",
  "markers": [
    {
      "start": "fetchStart",
      "label": "jquery"
    },
    {
      "start": "jqueryLoaded",
      "label": "ember"
    },
    {
      "start": "emberLoaded",
      "label": "application"
    },
    {
      "start": "startRouting",
      "label": "routing"
    },
    {
      "start": "willTransition",
      "label": "transition"
    },
    {
      "start": "didTransition",
      "label": "render"
    },
    {
      "start": "renderEnd",
      "label": "afterRender"
    }
  ],
  "socksPorts": [8880, 8881],
  "browserArgs": [
    "--disable-features=site-per-process,TranslateUI,BlinkGenPropertyTrees",
    "--disable-ipc-flooding-protection",
    "--v8-cache-options=none"
  ],
  "servers": [
    {
      "name": "control-tracerbench-build_1.0.1234",
      "url": "https://www.tracerbench.com/",
      "dist": "./relative-path-to-control-dist-files/",
      "har": "./relative-path-location-to-har-file/",
      "socksPort": 8880
    },
    {
      "name": "experiment-tracerbench-build_1.0.1234_v78gh95",
      "url": "https://www.tracerbench.com/",
      "dist": "./relative-path-to-experiment-dist-files/",
      "har": "./relative-path-location-to-har-file/",
      "socksPort": 8881
    }
  ]
}
 

FAQ

What exactly is contained within the tracerbench compare "tracerbench-results.json"? An overview of "tracerbench-results.json" is available here

What exactly is a HAR file? HAR (HTTP Archive) is a file format used by several HTTP session tools to export the captured data. The format is basically a JSON object with a particular field distribution. In any case, please note that not all the fields are mandatory, and many times some information won't be saved to the file "Additional insight on Google's HAR Analyzer"

What exactly is contained within the output file "trace.json"? The file "trace.json" is leveraged by TracerBench to capture an array of trace events. The interface of an individual trace event is essentially:

// process id
pidnumber;
// thread id
tidnumber;
// timestamp in μs
tsnumber;
// event phase
phTRACE_EVENT_PHASE;
// event categories (comma delimited)
catstring;
// event name
namestring;
// event key/value pairs
args{ [keystring]any } | ARGS.STRIPPED;
// ?timestamp in μs for trace event phase complete
dur?: number;
// ?thread clock timestamp in μs
tts?: number;
// ?thread clock duration in μs for trace event phase complete
tdur?: number;
// ?thread clock timestamp for related async events
use_async_tts?: number;
// ?scope of id
scope?: string;
// ?event id. optionally serialized as int64
id?: string;
// ?scoped event ids
id2?: | { localstring; } | { globalstring; };
// ?async event/event associations
bp?: string;
// ?flow binding id optionally serialized as int64
bind_id?: string;
// ?incoming flow flag
flow_in?: boolean;
// ?outgoing flow flag
flow_out?: boolean;
// ?scope for TRACE_EVENT_PHASE_INSTANT events
s?: TRACE_EVENT_SCOPE;

Commands

tracerbench compare

Compare the performance delta between an experiment and control

USAGE
  $ tracerbench compare

OPTIONS
  --browserArgs=browserArgs
      (required) [default: 
      --crash-dumps-dir=./tmp,--disable-background-timer-throttling,--disable-dev-shm-usage,--disable-cache,--disable-v8-i
      dle-tasks,--disable-breakpad,--disable-notifications,--disable-hang-monitor,--safebrowsing-disable-auto-update,--ign
      ore-certificate-errors,--v8-cache-options=none] (Default Recommended) Additional chrome flags for the TracerBench 
      render benchmark. TracerBench includes many non-configurable defaults in this category.

  --config=config
      Specify an alternative directory rather than the project root for the tbconfig.json. This explicit config will 
      overwrite all.

  --controlURL=controlURL
      Control URL to visit for compare command

  --cpuThrottleRate=cpuThrottleRate
      (required) [default: 2] CPU throttle multiplier

  --debug
      Debug flag per command. Will output noisy command

  --emulateDevice=iphone-4|iphone-5se|iphone-678|iphone-678-plus|iphone-x|blackberry-z30|nexus-4|nexus-5|nexus-5x|nexus-
  6|nexus-6p|pixel-2|pixel-2-xl|lg-optimus-l70|nokia-n9|nokia-lumia-520|microsoft-lumia-550|microsoft-lumia-950|galaxy-s
  -iii|galaxy-s5|kindle-fire-hdx|ipad-mini|ipad|ipad-pro|blackberry-playbook|nexus-10|nexus-7|galaxy-note-3|galaxy-note-
  ii|laptop-with-touch|laptop-with-hidpi-screen|laptop-with-mdpi-screen
      Emulate a mobile device screen size.

  --emulateDeviceOrientation=horizontal|vertical
      [default: vertical] Expected to be either "vertical" or "horizontal". Dictates orientation of device screen.

  --experimentURL=experimentURL
      Experiment URL to visit for compare command

  --fidelity=fidelity
      (required) [default: low] Directly correlates to the number of samples per trace. High is the longest trace time.

  --headless
      Run with headless chrome flags

  --hideAnalysis
      Hide the the analysis output in terminal

  --markers=markers
      (required) [default: domComplete] User Timing Markers

  --network=none|offline|dialup|slow-2g|2g|slow-edge|edge|slow-3g|dsl|3g|fast-3g|4g|cable|LTE|FIOS
      (required) [default: none] Simulated network conditions.

  --regressionThreshold=regressionThreshold
      The upper limit the experiment can regress slower in milliseconds. eg 100

  --report
      Generate a PDF report directly after running the compare command.

  --runtimeStats
      Compare command output deep-dive stats during run.

  --socksPorts=socksPorts
      Specify a socks proxy port as browser option for control and experiment

  --tbResultsFolder=tbResultsFolder
      (required) [default: ./tracerbench-results] The output folder path for all tracerbench results

  --tracingLocationSearch=tracingLocationSearch
      (required) [default: ?tracing] The document location search param.

See code: dist/src/commands/compare/index.ts

tracerbench compare:analyze RESULTSFILE

Run an analysis of a benchmark run from a results json file and output to terminal

USAGE
  $ tracerbench compare:analyze RESULTSFILE

ARGUMENTS
  RESULTSFILE  Results JSON file

OPTIONS
  --fidelity=fidelity                        (required) [default: low] Directly correlates to the number of samples per
                                             trace. High is the longest trace time.

  --regressionThreshold=regressionThreshold  The upper limit the experiment can regress slower in milliseconds. eg 100

  --tbResultsFolder=tbResultsFolder          (required) [default: ./tracerbench-results] The output folder path for all
                                             tracerbench results

See code: dist/src/commands/compare/analyze.ts

tracerbench help [COMMAND]

display help for tracerbench

USAGE
  $ tracerbench help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI

See code: @oclif/plugin-help

tracerbench marker-timings

Get list of all user-timings from trace

USAGE
  $ tracerbench marker-timings

OPTIONS
  --filter=filter          User timing marks start with
  --traceFrame=traceFrame  Specify a trace insights frame
  --tracepath=tracepath    (required) The path to the generated trace.json file
  --url=url                (required) URL to visit for record-har, timings & trace commands

See code: dist/src/commands/marker-timings.ts

tracerbench record-har

Generates a HAR file from a URL.

USAGE
  $ tracerbench record-har

OPTIONS
  --config=config            Specify an alternative directory rather than the project root for the tbconfig.json. This
                             explicit config will overwrite all.

  --cookiespath=cookiespath  (required) The path to a JSON file containing cookies to authenticate against the
                             correlated URL

  --dest=dest                (required) The destination path for the generated file

  --filename=filename        (required) [default: tracerbench] The filename for the generated file

  --marker=marker            (required) [default: domComplete] The last marker before ending recording

  --url=url                  (required) URL to visit for record-har, timings & trace commands

See code: dist/src/commands/record-har.ts

tracerbench report

Parses the output json from tracerbench and formats it into pdf and html

USAGE
  $ tracerbench report

OPTIONS
  --config=config                    Specify an alternative directory rather than the project root for the
                                     tbconfig.json. This explicit config will overwrite all.

  --tbResultsFolder=tbResultsFolder  (required) [default: ./tracerbench-results] The output folder path for all
                                     tracerbench results

See code: dist/src/commands/report.ts

tracerbench trace

Parses a CPU profile and aggregates time across heuristics. Can be vertically sliced with event names.

USAGE
  $ tracerbench trace

OPTIONS
  --cookiespath=cookiespath
      (required) The path to a JSON file containing cookies to authenticate against the correlated URL

  --cpuThrottleRate=cpuThrottleRate
      (required) [default: 2] CPU throttle multiplier

  --harpath=harpath
      (required) The path to the HTTP Archive File (HAR)

  --insights
      Analyze insights from command.

  --iterations=iterations
      (required) [default: 1] Number of runs

  --locations=locations
      include locations in names

  --network=none|offline|dialup|slow-2g|2g|slow-edge|edge|slow-3g|dsl|3g|fast-3g|4g|cable|LTE|FIOS
      [default: none] Simulated network conditions.

  --tbResultsFolder=tbResultsFolder
      (required) [default: ./tracerbench-results] The output folder path for all tracerbench results

  --url=url
      (required) URL to visit for record-har, timings & trace commands

See code: dist/src/commands/trace.ts

Keywords

install

npm i tracerbench

Downloadsweekly downloads

636

version

3.0.6

license

BSD-2-Clause

repository

Gitgithub

last publish

collaborators

  • avatar
  • avatar
  • avatar
Report a vulnerability