为什么帧指针对 OCaml 很重要?· 永远好奇的博客

主要观点:在 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 进行综合基准测试。
阅读 8
0 条评论