[cpu-profiler] Implement CPU profiler subsampling/multiplexing

Permit individual calls to CpuProfiler::StartSampling to provide their
own requested sampling interval, to be snapped to the profiler's
sampling interval. Use the greatest common divisor of all sample rates
to determine what sample rate should be chosen for the sampling thread,
and dispatch samples to attached profilers based on their requested
sample periodicity.

Change-Id: I0b076d09761d7176f31725e112578b68ab5da54c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1484461
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Cr-Commit-Position: refs/heads/master@{#61548}
8 files changed
tree: 362e0fdf495d2697edfe243d3439fc1ebf535f0c
  1. .clang-format
  2. .clang-tidy
  3. .editorconfig
  4. .git-blame-ignore-revs
  5. .gitattributes
  6. .gitignore
  7. .gn
  8. .vpython
  9. .ycm_extra_conf.py
  10. AUTHORS
  11. BUILD.gn
  12. CODE_OF_CONDUCT.md
  13. ChangeLog
  14. DEPS
  15. INFRA_OWNERS
  16. LICENSE
  17. LICENSE.fdlibm
  18. LICENSE.strongtalk
  19. LICENSE.v8
  20. LICENSE.valgrind
  21. OWNERS
  22. PRESUBMIT.py
  23. README.md
  24. WATCHLISTS
  25. benchmarks/
  26. build_overrides/
  27. codereview.settings
  28. custom_deps/
  29. docs/
  30. gni/
  31. include/
  32. infra/
  33. samples/
  34. snapshot_toolchain.gni
  35. src/
  36. test/
  37. testing/
  38. third_party/
  39. tools/
README.md

V8 JavaScript Engine

V8 is Google's open source JavaScript engine.

V8 implements ECMAScript as specified in ECMA-262.

V8 is written in C++ and is used in Google Chrome, the open source browser from Google.

V8 can run standalone, or can be embedded into any C++ application.

V8 Project page: https://v8.dev/docs

Getting the Code

Checkout depot tools, and run

    fetch v8

This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run

    git pull origin
    gclient sync

For fetching all branches, add the following into your remote configuration in .git/config:

    fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
    fetch = +refs/tags/*:refs/tags/*

Contributing

Please follow the instructions mentioned at v8.dev/docs/contribute.