diff options
author | YH Lin <yueherngl@chromium.org> | 2022-12-03 00:17:55 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-12-05 17:43:18 +0000 |
commit | dd732876495ed4942d00b9f9ca8dd3b01bad7120 (patch) | |
tree | bdff671e5ad3e71e30ab56f4f084f34a2fd72e28 /include/benchmark.h | |
parent | 184d13e77614be3be5374d3fef9d1edf66ec8687 (diff) | |
download | chrome-ec-factory-brya-14909.124.B-main.tar.gz |
Revert "Merge remote-tracking branch cros/main into factory-brya-14909.124.B-main"factory-brya-14909.124.B-main
This reverts commit 184d13e77614be3be5374d3fef9d1edf66ec8687.
Reason for revert: broken build due to ec-utils.
Original change's description:
> Merge remote-tracking branch cros/main into factory-brya-14909.124.B-main
>
> Generated by: util/update_release_branch.py --baseboard brya --relevant_paths_file
> baseboard/brya/relevant-paths.txt factory-brya-14909.124.B-main
>
> Relevant changes:
>
> git log --oneline 19d4d68ffa..aa40b859b3 -- baseboard/brya board/agah
> board/anahera board/banshee board/brya board/crota board/felwinter
> board/gimble board/kano board/mithrax board/osiris board/primus
> board/redrix board/taeko board/taniks board/vell board/volmar
> driver/bc12/pi3usb9201_public.* driver/charger/bq25710.*
> driver/ppc/nx20p348x.* driver/ppc/syv682x_public.*
> driver/retimer/bb_retimer_public.* driver/tcpm/nct38xx.*
> driver/tcpm/ps8xxx_public.* driver/tcpm/tcpci.* include/power/alderlake*
> include/intel_x86.h power/alderlake* power/intel_x86.c
> util/getversion.sh
>
> e6da633c38 driver: Sort header files
> 234a87ae2d tcpci: Add FRS enable to driver structure
> a56be59ccd tcpm_header: add test for tcpm_dump_registers
> 57b3256963 Rename CONFIG_CHARGER_INPUT_CURRENT to _CHARGER_DEFAULT_CURRENT_LIMIT
> e420c8ff9a marasov: Modify TypeC and TypeA configuration.
> 43b53e0045 Add default implementation of board_set_charge_limit
> b75dc90677 Add CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT
> f1b563c350 baseboard: Sort header files
> 7d01b1e58d driver/retimer/ps8818.h: Add I2C ADDR FLAGS 0x30, 0x58, 0x70
> ec31407993 Add CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
> 8f89f69a5b crota: disable lid angle sensor for clamshell
>
> BRANCH=None
> BUG=b:260630630 b:163093572 b:259002141 b:255184961 b:259354679
> BUG=b:247100970 b:254328661
> TEST=`emerge-brya chromeos-ec`
>
> Force-Relevant-Builds: all
> Change-Id: I0ecfa0e6af68631283c7a9e8f1afb9d827176c62
> Signed-off-by: YH Lin <yueherngl@google.com>
Bug: b:260630630 b:163093572 b:259002141 b:255184961 b:259354679
Bug: b:247100970 b:254328661
Change-Id: Ia14942d1bd6a502062399d77cb59d1f4b549b2c9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4077247
Auto-Submit: YH Lin <yueherngl@chromium.org>
Tested-by: YH Lin <yueherngl@chromium.org>
Reviewed-by: Boris Mittelberg <bmbm@google.com>
Commit-Queue: YH Lin <yueherngl@chromium.org>
Diffstat (limited to 'include/benchmark.h')
-rw-r--r-- | include/benchmark.h | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/include/benchmark.h b/include/benchmark.h deleted file mode 100644 index 190580ebb7..0000000000 --- a/include/benchmark.h +++ /dev/null @@ -1,157 +0,0 @@ -/* Copyright 2022 The ChromiumOS Authors - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - * - * Benchmark utility functions. - */ - -#ifndef __CROS_EC_BENCHMARK_H -#define __CROS_EC_BENCHMARK_H - -#include <stdint.h> - -#include <array> -#include <functional> -#include <optional> -#include <string_view> - -extern "C" { -#include "clock.h" -#include "console.h" -#include "timer.h" -#include "util.h" -#include "watchdog.h" -} - -/* Benchmark execution options */ -struct BenchmarkOptions { - /* Number of test iterations */ - int num_iterations = 10; - /* Whether to reload the watchdog between executions of f() */ - bool reload_watchdog = true; - /* Whether to enable fast CPU clock during the test (when supported) */ - bool use_fast_cpu = true; -}; - -/* The result of a benchmark run with various timing metrics. - * All time measurements are in micro seconds, except the average that - * is captured in nanoseconds for increased resolution. - */ -struct BenchmarkResult { - /* Name of the test, used when printing results */ - std::string_view name; - /* Total elapsed time (us) for all iterations */ - uint32_t elapsed_time; - /* Average elapsed time (ns) for a single iteration */ - uint32_t average_time; - /* Minimum elapsed time (us) for a single iteration */ - uint32_t min_time; - /* Maximum elapsed time (us) for a single iteration */ - uint32_t max_time; -}; - -/* Benchmark main class responsible for running the experiments and - * collecting/printing the results. - * Note that the implementation intentionally avoid dynamic memory allocations - * and stores up to MAX_NUM_RESULTS results into a std::array. - */ -template <int MAX_NUM_RESULTS = 5> class Benchmark { - public: - explicit Benchmark(const BenchmarkOptions &options = BenchmarkOptions()) - : options_(options){}; - - /* Run benchmark of the function f(). - * - * TODO(b/253099367): replace std::optional with StatusOr - */ - std::optional<BenchmarkResult> - run(const std::string_view benchmark_name, std::function<void()> f) - { - if (benchmark_name.empty()) { - ccprintf("%s: benchmark_name cannot be empty\n", - __func__); - return {}; - } - if (num_results_ >= MAX_NUM_RESULTS) { - ccprintf("%s: cannot store new BenchmarkResults\n", - __func__); - return {}; - } - - BenchmarkResult &result = results_[num_results_++]; - result.name = benchmark_name; - result.elapsed_time = 0; - - if (options_.use_fast_cpu) - clock_enable_module(MODULE_FAST_CPU, 1); - - bool valid_min_max = false; - for (int i = 0; i < options_.num_iterations; ++i) { - timestamp_t start_time = get_time(); - f(); - uint32_t iteration_time = time_since32(start_time); - - if (options_.reload_watchdog) - watchdog_reload(); - - if (valid_min_max) { - result.max_time = - MAX(result.max_time, iteration_time); - result.min_time = - MIN(result.min_time, iteration_time); - } else { - result.max_time = iteration_time; - result.min_time = iteration_time; - valid_min_max = true; - } - result.elapsed_time += iteration_time; - } - - if (options_.use_fast_cpu) - clock_enable_module(MODULE_FAST_CPU, 0); - - result.average_time = - (result.elapsed_time) / options_.num_iterations; - - return result; - } - - void print_results() const - { - print_header(); - for (int i = 0; i < num_results_; ++i) - print_result(results_[i]); - } - - private: - const BenchmarkOptions options_; - std::array<BenchmarkResult, MAX_NUM_RESULTS> results_; - int num_results_ = 0; - - /* Print table header with column names */ - void print_header() const - { - constexpr char kSeparator[] = "--------------------------"; - - ccprintf("%16s | %15s | %13s | %13s | %13s | %13s\n", - "Test Name", "Num Iterations", "Elapsed (us)", - "Min (us)", "Max (us)", "Avg (us)"); - ccprintf("%.*s | %.*s | %.*s | %.*s | %.*s | %.*s\n", 16, - kSeparator, 15, kSeparator, 13, kSeparator, 13, - kSeparator, 13, kSeparator, 13, kSeparator); - cflush(); - } - - /* Print a single benchmark result */ - int print_result(const BenchmarkResult &result) const - { - ccprintf("%16s | %15u | %13u | %13u | %13u | %13u\n", - result.name.data(), options_.num_iterations, - result.elapsed_time, result.min_time, result.max_time, - result.average_time); - cflush(); - return EC_SUCCESS; - } -}; - -#endif /* __CROS_EC_BENCHMARK_H */ |