mirror of
https://github.com/google/benchmark.git
synced 2024-12-28 21:40:15 +08:00
376ebc2635
* Support optional, user-directed collection of performance counters The patch allows an engineer wishing to drill into the root causes of a regression, for example. Currently, only single threaded runs are supported. The feature is a build-time opt in, and then a runtime opt in. The engineer may run the benchmark executable, passing a list of performance counter names (using libpfm's naming scheme) at the command line. The counter values will then be collected and reported back as UserCounters. This is different from #240 in that it is a benchmark user opt-in, and the counter collection is transparent to the benchmark. Currently, this is only supported on platforms where libpfm is supported. libpfm: http://perfmon2.sourceforge.net/ * 'Use' values param in Snapshot when BENCHMARK_OS_WINDOWS This is to avoid unused parameter warning-as-error * Added missing include for <vector> in perf_counters.cc * Moved doc to docs * Added license blurbs
45 lines
1.4 KiB
YAML
45 lines
1.4 KiB
YAML
name: build-and-test-perfcounters
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
job:
|
|
# TODO(dominic): Extend this to include compiler and set through env: CC/CXX.
|
|
name: ${{ matrix.os }}.${{ matrix.build_type }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, ubuntu-16.04, ubuntu-20.04]
|
|
build_type: ['Release', 'Debug']
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: install libpfm
|
|
run: sudo apt install libpfm4-dev
|
|
|
|
- name: create build environment
|
|
run: cmake -E make_directory ${{ runner.workspace }}/_build
|
|
|
|
- name: configure cmake
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}/_build
|
|
run: cmake -DBENCHMARK_ENABLE_LIBPFM=1 -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
|
|
|
- name: build
|
|
shell: bash
|
|
working-directory: ${{ runner.workspace }}/_build
|
|
run: cmake --build . --config ${{ matrix.build_type }}
|
|
|
|
# Skip testing, for now. It seems perf_event_open does not succeed on the
|
|
# hosting machine, very likely a permissions issue.
|
|
# TODO(mtrofin): Enable test.
|
|
# - name: test
|
|
# shell: bash
|
|
# working-directory: ${{ runner.workspace }}/_build
|
|
# run: sudo ctest -C ${{ matrix.build_type }} --rerun-failed --output-on-failure
|