如何在某些用户定义的活动期间根据CPU,内存或线程使用情况来测量OS X中kext的性能影响?任何可以从用户土地使用的特定方法工具?或者可以考虑的任何方法/方法?KEXT的性能分析
回答
你已经基本上有2种选择:
与时间测量你的插入检测KEXT。在您尝试使用
mach_absolute_time()
进行测量的操作之前和之后进行戳记,使用absolutetime_to_nanoseconds()
将其转换为人类可读的单元并采取差异,然后在kext中的某处收集该信息,以便从用户空间中提取该信息。采样内核堆栈使用DTrace(
iprofiler -kernelstacks -timeprofiler
在命令行,或使用Instruments.app)
就个人而言,我已经与前一种方法多了很多成功,但它肯定是更多的工作。大多数kext代码运行得非常简短,以至于采样分析器几乎没有捕获任何正在执行的实例,除非您缩短采样间隔以至于测量开始干扰系统,或者您的kext速度很慢。尽管这样做很容易,所以它通常是一个有效的完整性检查。
您还可以让您的编译器使用计数器(-fprofile-arcs
)来测试您的代码,理论上这将允许您将采样统计信息与分支计数器结合起来,以确定每个分支的运行时间。提取这些数据虽然是一种痛苦(0可能会有所帮助),并且统计噪声在实践中使我无用。
显式方法还允许您测量异步操作等,但当然也带有一些内在开销。安全地收集数据也有点棘手。 (我使用原子操作,但也可以使用自旋锁,不要忘记不仅要测量平均值,还要标准偏差以及最小/最大时间)。提取数据可能会很痛苦,因为您必须添加用户空间界面到你的kext。但它绝对值得!
感谢您的指导,我会尝试选项。 – Utkarsh
- 1. 性能分析
- 2. SQL性能分析
- 3. VsInstr性能分析
- 4. OpenMP性能分析
- 5. CSS性能分析
- 6. jmeter性能分析
- 7. JPQL性能分析
- 8. 性能分析器
- 9. CouchDB的性能分析
- 10. NET中的性能分析
- 11. HttpHandler的性能分析
- 12. Java性能分析,性能调整和内存分析练习
- 13. 性能测试与性能分析
- 14. 性能分析方法性能
- 15. Python性能分析的更好细分
- 16. 作为性能分析器的Windows性能分析工具的使用情况
- 17. 性能(性能分析)数据的性能记录
- 18. Apache Velocity(VTL)性能分析
- 19. Visual Studio性能分析:JavaScript
- 20. 分析MongoDb聚合性能
- 21. 高性能java分析器
- 22. “JAVA代码”性能分析
- 23. C++性能分析:KiFastSystemCallRet
- 24. 多平台性能分析
- 25. 分析SQL扫描性能
- 26. CSS性能分析器?
- 27. 提高Argo分析性能
- 28. Jmeter - 性能测试分析
- 29. 分析场景性能?
- 30. Visual Studio性能分析
对那些试图解决这个问题的人来说:关心证明你的“偏离主题”和“过于宽泛”的观点?这不是一个突出的任何深度的主题,所以一个相当广泛的问题似乎是有效的。 – pmdj