深入了解xhprof性能分析工具
2016-08-18 11:31
260 查看
前言
这篇文章不是教你如何安装使用xhprof进行性能分析。如果想了解如何安装使用xhprof,网络上文章很多,你也可以看我之前写的两篇文章。非侵入式监控PHP应用性能监控分析
xhprof
gui,让xhprof界面更漂亮,功能更强大
这篇文章主要介绍使用xhprof时的一些常见问题,和xhprof是如何实现性能分析的。
常见问题
多次调用xhprof_enable方法,最后生效的配置是哪个?
当你在一次请求中多次调用xhprof_enable方法,只有第一次调用时进行的设置能生效。在调用xhprof_disable()后,你又可以使用xhprof_enable方法进行设置。
输出内容中的ct,wt,cpu,mu, pmu 都代表什么意思
ct 表示 调用的次数wt 表示 函数方法执行的时间耗时。相当于,在调用前记录一个时间,函数方法调用完毕后,计算时间差。
cpu 表示 函数方法执行消耗的cpu时间。和wt的差别在于,当进程让出cpu使用权后,将不再计算cpu时间。通过调用系统调用getrusage获取进程的占用cpu数据。
mu 表示 函数方法所使用的内存。相当于,在调用前记录一个内存占用,函数方法调用完毕后,计算内存差。调用的是zend_memory_usage获取内存占用情况。
pmu 表示 函数方法所使用的内存峰值。调用的是zend_memory_peak_usage获取内存情况。
输出内容中good==>good@1 是什么意思?
==>表示一个调用关系。由于带@,说明是一个递归调用。@后面的数字是递归调用的深度。
如何设置xhprof_enable的参数,减少性能消耗
xhprof_enable提供了三个常量,用于设置你是否需要统计PHP内置函数,都统计那些指标。三个常量如下:
XHPROF_FLAGS_NO_BUILTINS
设置这个常量后,将不统计PHP内置函数。毕竟PHP的内置函数性能一般都不错。没必要再消耗性能去统计。所以,建议设置。
XHPROF_FLAGS_CPU
设置这个常量后,会统计进程占用CPU时间。由于CPU时间是通过调用系统调用getrusage获取,导致性能比较差。开启这个选项后,大概性能下降一半。因此,如果对cpu耗时不是特别敏感的情况下,建议不要启用这个选项。
XHPROF_FLAGS_MEMORY
设置这个常量后,将会统计内存占用情况。由于获取内存情况,使用的是zend_memory_usage和zend_memory_peak_usage,并不是系统调用。因此,对性能影响不大。如果需要对内存使用情况进行分析的情况下,可以开启。
性能分析原理
如何实现对各个函数方法性能数据记录
目前xhprof会对,加载PHP文件,执行PHP函数方法,和执行eval方法进行性能数据记录。正好,这些在PHP内核中,有对应的函数进行处理。当你调用xhprof_enable方法时,会把默认的方法替换为xhprof的方法。来看看相关代码吧。
xhprof在实现的时候,性能方面做了哪些优化
获取时间时,为了性能,使用了汇编来获取时间戳计数器。时间秒 = 时间戳计数器值 / CPU主频。正是这种实现,导致目前xhprof还只适用于x86架构。此外,因为RDTSC的数据不能在CPU间同步,所以,xhprof会将进程绑定在单个CPU上。
如果SpeedStep技术是打开的,XHProf的基于RDTSC定时器的功能就不能正常工作了。这项技术在某些英特尔处理器上是可用的。[注:苹果台式机和笔记本电脑一般都将SpeedStep技术预设开启。使用XHProf,您需要禁用SpeedStep技术。 ]
相关文章推荐
- php 性能分析工具xhprof使用手册
- xhprof:php性能分析工具
- XHProf——php性能分析工具
- xhprof(PHP性能分析工具)
- 在Yii2中如何使用xhprof性能分析工具
- xhprof php性能分析工具
- php性能分析工具xhprof
- php性能分析工具xhprof
- PHP 性能分析工具XHProf使用
- php性能分析工具xhprof的安装使用
- 实用php性能分析工具XHProf(facebook)
- windows下安装PHP性能分析工具 xhprof 笔记
- php性能分析工具xhprof
- PHP性能分析工具XHProf安装使用教程
- XHProf php轻量级的性能分析工具使用手册(中文版)
- XHProf php轻量级的性能分析工具使用手册(中文版)
- php性能分析工具xhprof
- XHProf性能分析工具
- PHP性能分析工具XHProf安装使用教程
- PHP性能分析工具XHProf安装使用教程