主要观点:在 Tarides 去年年底,同事们致力于改进 OCaml 中对帧指针的支持,文中分享了支持帧指针的原因及相关工作进展。
关键信息:
- 支持帧指针可让 OCaml 程序在不同硬件上使用标准工具进行可靠的性能分析,覆盖所有 Tier-1 支持平台能提供一致体验,还可用于源级调试。
- 帧指针是指向当前栈帧底部的寄存器,可被剖析器以语言无关的方式展开栈,许多语言都支持维护帧指针。
- OCaml 5 引入的非连续栈使 perf 无法正确工作,帧指针是最佳解决方案,已为 AMD64 和 ARM64 平台添加帧指针支持,相关 PR 包括多个平台的改进及修复 bug 等。
- 最初目标是所有 Tier-1 平台,虽已在 AMD64 和 ARM64 上完成较多工作,但 RISC-V 还需进一步工作,s390x 和 Power 仅做了一些初步工作。
重要细节: - 在 AMD64 平台,通过修改后端汇编代码生成和 OCaml 运行时,扩展
--enable-frame-pointers
配置文件来支持帧指针,在 macOS 上只需一行更改。 - 在 ARM64 平台,通过在 autoconf 中添加新的 Linux 和 macOS 情况,暴露
Config.with_frame_pointers
配置标志,在asmcomp
目录中修改汇编代码生成来实现帧指针支持。 - 已完成的工作涵盖多个 PR,如在 macOS x86_64 上启用帧指针、为 ARM64 平台添加支持、修复相关 bug 等,还需完成剩余平台的工作并对 ARM64 进行综合基准测试。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。