AWSY¶
Are We Slim Yet 项目(通常称为 AWSY)跟踪跨构建的内存使用情况。
在 Treeherder 上,AWSY 构建列在 SY 的子组中。
AWSY 测试包含三种类型:TP5*、TP6 和基础内存使用情况。
*TP5 测试已过时,不再维护。这些测试计划删除: https://bugzilla.mozilla.org/show_bug.cgi?id=1712406
Awsy 测试¶
基础 (FF)
本地运行命令
./mach awsy-test --base
负责人: :mccr8 和性能测试团队
- 测试任务:
- test-linux1804-64-clang-trunk-qr/opt
awsy-base: 无
awsy-base-dmd: 无
- test-linux1804-64-qr/opt
awsy-base: 无
awsy-base-dmd: 无
- test-linux1804-64-shippable-qr/opt
awsy-base: trunk
awsy-base-dmd: 无
- test-macosx1015-64-shippable-qr/opt
awsy-base: trunk
awsy-base-dmd: 无
- test-windows11-32-2009-qr/opt
awsy-base: 无
awsy-base-dmd: 无
- test-windows11-32-2009-shippable-qr/opt
awsy-base: 无
awsy-base-dmd: 无
- test-windows11-64-2009-qr/opt
awsy-base: 无
awsy-base-dmd: 无
- test-windows11-64-2009-shippable-qr/opt
awsy-base: trunk
awsy-base-dmd: 无
dmd (FF)
本地运行命令
./mach awsy-test --dmd
负责人: :mccr8 和性能测试团队
- 测试任务:
- test-linux1804-64-clang-trunk-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-linux1804-64-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-linux1804-64-shippable-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-macosx1015-64-shippable-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-windows11-32-2009-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-windows11-32-2009-shippable-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-windows11-64-2009-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
- test-windows11-64-2009-shippable-qr/opt
awsy-base-dmd: 无
awsy-dmd: 无
tp5 (FF)
本地运行命令
./mach awsy-test --tp5
负责人: :mccr8 和性能测试团队
- 测试任务:
test-linux1804-64-clang-trunk-qr/opt
test-linux1804-64-qr/opt
test-linux1804-64-shippable-qr/opt
test-macosx1015-64-shippable-qr/opt
test-windows11-32-2009-qr/opt
test-windows11-32-2009-shippable-qr/opt
test-windows11-64-2009-qr/opt
test-windows11-64-2009-shippable-qr/opt
tp6 (FF)
本地运行命令
./mach awsy-test
负责人: :mccr8 和性能测试团队
- 测试任务:
- test-linux1804-64-clang-trunk-qr/opt
awsy-tp6: 无
- test-linux1804-64-qr/opt
awsy-tp6: 无
- test-linux1804-64-shippable-qr/opt
awsy-tp6: trunk
- test-macosx1015-64-shippable-qr/opt
awsy-tp6: trunk
- test-windows11-32-2009-qr/opt
awsy-tp6: 无
- test-windows11-32-2009-shippable-qr/opt
awsy-tp6: 无
- test-windows11-64-2009-qr/opt
awsy-tp6: 无
- test-windows11-64-2009-shippable-qr/opt
awsy-tp6: trunk
在本地运行 AWSY¶
在本地运行测试很可能仅用于调试测试中发生的情况,因为测试输出仅报告为原始 JSON。CLI 通过以下方式记录
./mach awsy-test --help
目前所有测试都会下载 TP5,即使它没有被使用,请参阅: https://bugzilla.mozilla.org/show_bug.cgi?id=1683920
TP5 测试¶
./mach awsy-test --tp5
TP6 测试¶
./mach awsy-test
基础内存使用情况测试¶
./mach awsy-test --base
在 Try 上运行 AWSY¶
可以通过 mach try 模糊查找器生成 AWSY 运行
./mach try fuzzy
对“awsy”的查询将返回所有 AWSY 测试。默认测试是 TP5,TP6 和基础测试名称将分别包含 tp6 和 base。
以下文档列出了我们目前为 AWSY 运行的所有测试。以下内容已从 https://wiki.mozilla.org/AWSY/Tests 迁移,并将更新以阐明 TP5/TP6 测试与基础测试: https://bugzilla.mozilla.org/show_bug.cgi?id=1714600
TP5/TP6 测试¶
以下测试适用于 TP5 和 TP6。默认情况下,运行 ./mach awsy-test 将运行 TP6 测试*。要运行 TP5 测试,请添加 –tp5 标志:./mach awsy-test –tp5
*TP5 测试已过时,不再维护。这些测试计划删除: https://bugzilla.mozilla.org/show_bug.cgi?id=1712406
显式内存¶
这是由内存报告器明确报告的内存。它包括通过对堆分配函数(例如 malloc 和 new)的显式调用分配的所有内存,以及一些(仅限于内存报告器覆盖的)通过对非堆分配函数(例如 mmap 和 VirtualAlloc)的显式调用分配的内存。
可能的回归原因
此方面的回归通常意味着新功能正在使用或保留更多内存,应予以关注。这些更容易诊断,因为我们可以比较内存报告。
有关更多详细信息,请参阅 about:memory mdn 页面。
未分类堆¶
待办事项:添加测试定义
图像¶
这是“显式”度量的子集,重点关注用于渲染图像的内存。
可能的回归原因
此方面的回归可能表明图像子系统中存在泄漏或内存使用效率低下。过去,这是一个持续存在的问题。
JS¶
待办事项:添加测试定义
驻留内存¶
可能的回归原因
此方面的回归通常会跟踪显式和未分类堆中的回归。如果我们在驻留内存中看到回归,但在其他报告中没有看到,这可能表明我们正在泄漏未跟踪的内存(可能是通过共享内存、图形分配、文件句柄等)。
基础内容测试¶
一项专注于支持 Fission 的更新测试。它衡量空内容进程的基本开销。它跟踪驻留唯一、未分类堆、JS 和显式内存指标,并将完整的内存报告存储为工件。每个指标的中值来自所有内容进程。它对发出警报的阈值低得多,并在 Perfherder 中记录。
基础内容显式¶
可能的回归原因
更改导致在启动时或在空白页面中加载了更多 JavaScript
常见解决方案:延迟加载您依赖的任何新模块
常见解决方案:将代码拆分出来,以便最初仅加载最少的必要内容。您修改了 JS 引擎,它正在使用更多内存
常见解决方案:尝试减少通用情况下的对象大小,这些对象往往会累积!您在 JavaScript 中实现了一个新功能
常见解决方案:用编译代码(C++/Rust)编写大部分(或全部)。这将减少开销并通常提高性能。
基础内容未分类堆¶
“未分类堆”值表示任何内存报告器都未测量的堆分配内存。这通常占“显式”的 10-20%。
可能的回归原因
此方面的回归可能表明我们正在泄漏内存,或者应该添加其他内存报告器。
改进可能表明泄漏已修复或我们添加了新的内存报告器。
有关更多详细信息,请参阅 about:memory mdn 页面。
基础内容 JS¶
这是 about:memory 中的“js-main-runtime/”值,它是归因于 javascript 引擎的所有内存。
可能的回归原因
此数字的回归可能表明 JS 引擎中存在泄漏、以牺牲更多内存为代价考虑性能的优化或垃圾回收器存在问题。
基础内容驻留唯一内存¶
待办事项:添加测试定义