Service Worker 性能测试

我们的性能测试是在 mozperftest 框架中运行的 mochitests。测试位于 dom/serviceworkers/test/performance 下,并在 perftest.toml 中列出。除了标准的 mochitest 机制之外,性能测试还在顶层定义了一个 perfMetadata 变量,并调用

info("perfMetrics", JSON.stringify(metrics));

来报告其结果,其中 metrics 是一个从测试点名称到标量数值的映射。有关更多信息,请参阅 性能脚本文档

它们可以通过 mach perftest 运行,或者作为普通的 mochitests 通过 mach test 运行。(目前我们无法运行完整的清单,请参阅 bug 1865852。)

添加新的测试

像往常一样为 mochitests 将文件添加到 perftest.toml 中。

修改 taskcluster/kinds/perftest 下的 linux.yml、macosx.yml 和 windows11.yml。目前,每个测试都需要单独添加到运行命令中(例如 此处)。可以忽略 kind.yml,它提供了一些默认值。

将您的新测试添加到 perfdocs/config.yml 中。

使用以下命令修改生成的文档:

$ ./mach lint -l perfdocs . --fix --warnings --outgoing

目前存在一个 bug,这可能会导致命令失败。再次运行它应该会成功。

性能分析器标记

性能分析器标记可用于收集计时数据。可以从 perftest 中检查已知名称的标记。必须使用 AUTO_PROFILER_MARKER_TEXT,因为我们需要标记的开始时间和结束时间。例如

AUTO_PROFILER_MARKER_TEXT("interesting thing #1", DOM, {}, ""_ns);
AUTO_PROFILER_MARKER_TEXT("interesting thing #2", DOM, {}, ""_ns);

可以从 perftest 中检查

await startProfiler();
interestingThings();
let pdata = await stopProfiler();
let duration_ms = inspectProfile(pdata, [
    "interesting thing #1",
    "interesting thing #2"
]);

在 try 任务中暂存测试

$ ./mach try fuzzy --full

查找 ‘service-worker 以查找以下内容:

>perftest-windows-service-worker
>perftest-macosx-service-worker
>perftest-linux-service-worker

结果

结果可以在 treeherder 上的 mozilla-centralautoland 中找到。查找 linux-sw、macosx-sw 和 win-sw(示例)。这些符号名称在 taskcluster/kinds/perftest 下的 .yml 文件中定义。

联系方式

DOM LWS
Gregory Mierzwinski(性能工具)