指标名称预期文件

Fuchsia 用于报告性能测试结果的基础架构有一个 为每项指标的名称提供一组签入预期, 性能测试可能会产生怎样的影响该指标也称为 名称许可名单。此项已添加到 https://fxbug.dev/42056406.

如果性能测试生成的指标集不匹配 那么当测试预期文件中列出的值时 运行。这意味着,如果更改测试, 其预期文件也会随之更新 进行比对。

对于 fuchsia.git 中的测试,预期文件位于 src/tests/end_to_end/perf/expected_metric_names/.

所有新的性能测试都需要预期文件, 其中包括所有基于 Python 的性能测试。

预期权益

  • 预期文件旨在帮助您保持指标命名 保持一致。它们应该使您更方便地查看 同时提供一种方式,让所有者通过所有者审核 检查。

  • 预期文件应使测试作者能够更轻松地 为了进行比较 将签入代码库。

  • 预期文件应可让您更轻松地查看 针对指定 CL 生成的指标已发生变化。它们允许 确保 CL 不会被意外移除或 重命名的指标

  • 预期文件可用于检查指标数量 已添加。这很有用,因为添加 大量指标。

  • 预期文件应能够更轻松地确保 测试产生的指标都是确定性的。指标可能是 它也可以动态生成 。这意味着如果没有预期性检查, 测试的指标集可能因此是不确定的。 这种做法是不可取的,因为这会导致数据出现随机缺口 由 CI build 生成的自定义映像。

如何更新预期文件

更新测试预期文件的一种方法是运行测试 本地环境变量 FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR 集,并使用如下调用: :

fx test --e2e -o perf_publish_example_test \
    --env FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR=$(pwd)/src/tests/end_to_end/perf/expected_metric_names/

设置此环境变量后,测试将写入更新后的 预期文件复制到环境指定的目录中 变量。请注意,这不会保留可选指标名称 预期文件

如果未设置此环境变量,测试将报告 如果测试生成的指标与 预期文件,并输出差异。您可以 根据错误中的差异手动更新预期文件 消息。

如何添加预期文件

如果您要添加新的性能测试,可以添加预期值 创建该文件。

对于使用 fuchsia_component_perf_test GN 模板的测试, 步骤涉及手动创建占位符预期文件:

  1. 在预期文件中创建一个空的占位符版本 src/tests/end_to_end/perf/expected_metric_names/

  2. 在 GN 中添加 expected_metric_names_filepath 参数 测试声明(fuchsia_component_perf_test GN 模板调用)。

  3. 使用 FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR 在本地运行测试 以生成文件内容。

对于使用 python_perf_test GN 模板的测试,预期 文件名在 GN 和测试代码中均指定,因此它 可以避免手动创建占位符的不便 文件:

  1. expected_metric_names_filename 参数中的名称传递给 Python 测试代码中的 publish_fuchsiaperf()

  2. 在 GN 声明中设置 expected_metric_names_filepaths = [] 测试(python_perf_test GN 模板调用)。

  3. 使用 FUCHSIA_EXPECTED_METRIC_NAMES_DEST_DIR 在本地运行测试 以生成文件。

  4. expected_metric_names_filepaths 设置为 预期文件。

  5. 使用 git add src/tests/end_to_end/perf/expected_metric_names/ 将预期文件添加到 Git 检出。

如果测试有多个事件,则这些适用于 python_perf_test 的步骤也适用于 预期文件。

您可以先将文件添加到 BUILD.gn 文件中,但 如果该文件不存在,GN build 将失败。

可选指标

预期文件可能包含带有后缀的条目 [optional]。测试的 输出。这样,指标就可以根据架构 因机器而异对这些指标进行注释,说明为什么 都是选填的(注释行以“#”开头。)

这也使得指标在 生成与没有生产。但是,如果某个指标具有不确定性 通常会被视为应修复的错误。

跳过指标摘要

默认情况下,在使用 Python perf_publish 库时,fuchsiaperf 文件 则是汇总版本

此总结有两点值得强调:

  • 我们将每个 fuchsiaperf 条目中的第一个值视为预热跑 。
  • 同一测试用例可能有多个条目(例如, 多个进程运行),在这种情况下,我们会将它们合并。

作为后处理步骤执行此操作有以下好处:

  • 因此无需在上游(在 C++ perftest 库或其他语言的类似库中)或 下游消费者。
  • fuchsiaperf 摘要文件比“原始数据”小得多紫红色 文件,因此更易于管理。
  • “原始数据”但您仍然可以让 希望分析原始数据。

但在某些情况下,这可能并不可取:保持初始迭代的 而不是丢弃或允许报告标准差 并显示在图表中

因此,可以通过添加 [no-summarize-metrics] 来关闭摘要功能 添加指标名称预期文件的名称