magic - trace:高分辨率追踪利器,解决应用难题,还能深入洞悉程序运行!
magic - trace 概述magic - trace 能够收集并展示进程活动的高分辨率追踪信息可用于解决生产环境中应用程序处理请求速度慢、了解代码实际运行情况、获取应用崩溃前活动历史等问题。它性能开销在 2% - 10% 之间使用时无需修改应用程序能以约 40 纳秒分辨率追踪函数调用可呈现回溯约 10 毫秒的调用栈时间线。使用方式与 perf 类似关键区别在于 perf 采样调用栈magic - trace 利用 Intel Processor Trace 进行环形缓冲区快照之后可通过交互式时间线查看情况。还能针对函数追踪或附加到进程上按 Ctrl C 停止查看追踪信息。用户评价Francis Ricci 称 Magic - trace 是用过的最简单的命令行调试工具之一Andrew Hunter 表示它不只是用于性能分析能让人直接了解程序情况建议用于深入了解程序的场景Doug Patti 认为 perf 和 magic - trace 各有优势magic - trace 能在任何缩放级别切片分析可看到 70 纳秒函数的所有调用这在 perf 中看不到。安装安装前要确保系统满足支持条件如大多数虚拟机不支持仅支持 Intel 处理器Skylake 及以后型号仅适用于 Linux 系统。可从最新版本页面获取二进制文件预构建二进制文件需执行 chmod x magic - trace 赋予权限软件包则运行 sudo dpkg -i magic - trace*.deb 安装安装后运行 magic - trace - help 测试显示帮助信息则安装成功。快速上手有一个示例 C 程序是 man 3 dlopen 示例的修改版本下载编译运行后运行 magic - trace attach - pid $(pidof demo)看到成功附加消息后等待几秒按 Ctrl C 停止会生成 trace.fxt.gz 文件。打开 magic - trace.org点击“Open trace file”选择文件展开追踪信息。使用快捷键操作如按 W 放大、S 缩小等还能测量 cos 函数运行时间示例中约需 5.7 微秒。与 perf 工作流程不同magic - trace 提出假设能力出色如发现 cos 函数运行 6 微秒过长放大后有粉色“[untraced]”单元格以 root 权限重新运行并传递 - trace - include - kernel 参数可看到堆栈跟踪信息示例程序调用两次 cos 函数第二次耗时更短且无页面错误。使用方法magic - trace 持续记录控制流到环形缓冲区触发条件时进行快照并重建调用栈。触发快照方式有两种一是按 Ctrl C 停止未快照时对程序结束状态快照二是应用程序调用函数时触发通过 - trigger 标志实现有不同选择方式。停止指示器可放在异步运行时调度器周期过长、服务器请求处理时间过长、垃圾回收器运行后、编译器通过后等场景可保留在生产代码中调用约消耗 10 微秒时间仅在快照时产生开销。文档更多文档可在 magic - trace 维基页面查看。讨论可加入 Discord 实时交流或在 GitHub 讨论组异步交流。贡献想为 magic - trace 做贡献可先阅读构建说明配置编辑器浏览代码库在问题跟踪器找入门项目。隐私政策magic - trace 不会将代码及派生内容包括追踪信息发送到任何地方magic - trace.org 是 Perfetto 轻度修改版本在浏览器运行不会发送追踪信息担心未来变化可搭建本地版 Perfetto UI 使用。致谢Tristan Hume 是 magic - trace 原作者在 Jane Street 工作时编写目前由 Jane Street 维护。感谢英特尔推广 Intel PT 技术感谢 perf 开发者magic - trace.org 是 Perfetto 分支感谢 Google 相关人员magic - trace 设计受许多现有技术影响列出了参考资料。脚注1. perf 也能实现类似功能但大多数人不这么用magic - trace 通过 perf 驱动 Intel PT。2. 比 Broadwell 新的处理器也可用但不常测试时间分辨率约 1 微秒。3. https://github.com/actions/upload - artifact/issues/38
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2640634.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!