gpt4 book ai didi

macos - 性能分析 KEXT

转载 作者:行者123 更新时间:2023-12-04 13:53:18 26 4
gpt4 key购买 nike

在某些用户定义的事件期间,如何在 CPU、内存或线程使用方面衡量 OS X 中 kext 的性能影响?任何可以从用户空间使用的特定方法工具?或任何可以考虑的方法/方法?

最佳答案

您基本上有两个选择:

  • 用时间测量来检测你的 kext。使用 mach_absolute_time() 在您尝试测量的操作前后取邮票, 使用 absolutetime_to_nanoseconds() 转换为人类可读的单位并采取差异,然后在您的 kext 中的某个位置收集该信息,以便从用户空间中提取该信息。
  • 使用 dtrace 采样内核堆栈(来自命令行的 iprofiler -kernelstacks -timeprofiler,或使用 Instruments.app)

  • 就个人而言,我使用前一种方法取得了更大的成功,尽管它肯定需要更多的工作。大多数 kext 代码运行时间很短,以至于采样分析器几乎无法捕捉到它执行的任何实例,除非您将采样间隔减少到测量开始干扰系统的程度,或者您的 kext 非常慢。不过这很容易做到,所以它通常是一个有效的健全性检查。

    您还可以让您的编译器使用计数器 ( -fprofile-arcs ) 来检测您的代码,理论上这将允许您将采样统计信息与分支计数器结合起来,以确定每个分支的运行时间。虽然提取这些数据很痛苦( my code 可能会有所帮助),而且统计噪声在实践中对我来说毫无用处。

    显式方法还允许您测量异步操作等,但当然也带有一些内在开销。安全地累积数据也有点棘手。 (我使用原子操作,但您也可以使用自旋锁。不要忘记不仅要测量均值,还要测量标准偏差和最小/最大次数。)提取数据可能很痛苦,因为您必须添加用户空间界面到你的kext。但这绝对是值得的!

    关于macos - 性能分析 KEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822802/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com