首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >性能分析KEXT

性能分析KEXT
EN

Stack Overflow用户
提问于 2016-08-08 14:47:30
回答 1查看 336关注 0票数 5

在一些用户定义的活动中,如何根据CPU、内存或线程使用率来衡量OS X中kext的性能影响?有什么特殊的方法工具可以在用户的土地上使用吗?或者可以考虑的任何方法/方法?

EN

回答 1

Stack Overflow用户

发布于 2016-08-08 17:00:33

你基本上有两个选择:

  1. 使用时间测量工具测量您的kext。在您尝试使用dtrace测量的操作之前和之后获取戳,使用mach_absolute_time()将其转换为人类可读的单位并求出差值,然后在kext中的某个位置收集该信息,在该位置可以使用dtrace从userspace.
  2. Sampling内核堆栈中提取该信息(从命令行使用iprofiler -kernelstacks -timeprofiler,或者使用Instruments.app)

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

您还可以让编译器使用计数器(-fprofile-arcs)检测代码,从理论上讲,这将允许您将采样统计信息与分支计数器结合起来,以确定每个分支的运行时。不过,提取这些数据是一件痛苦的事情(my code可能会有所帮助),再一次,统计噪声让我在实践中对此毫无用处。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38822802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档