Ben*_*ler 7 google-perftools gperftools pprof
我正在寻找一个关于gperftools如何工作的简单解释.到目前为止,这是我所学到的:
除了一般概述,以下是我想回答的一些具体问题:
我问这个问题来推断在Go服务器上使用pprof引入的开销.
它是一个抽样分析器.
基本上,有两种类型的分析:要么跟踪程序所做的一切(保持每个调用的计数,将每个函数包装在一个计时器中,换句话说,用你的乐器渗透代码),否则你让它自己运行但是不时地对它进行简单检查(取样).
检测的问题在于它改变了程序的执行方式.它会减慢程序的速度,同时也会扭曲结果.(例如,生产代码可能花费太多时间等待IO,但是检测代码可能不会出现这种情况.)它还收集了比统计上必要的更多数据(如果最终你关心的是确定大多数时间是花费).
通过运行strace,您可以看到Google-perftools使用SIGPROF信号(如HPCToolkit和Open | SpeedShop).据推测,它只是设置一个事件处理程序,然后在内存中徘徊,不消耗任何CPU周期,直到硬件/操作系统中断你的程序(这可能是你喜欢的偶然),然后可能只是保存了一个调用堆栈的副本(并安排下一个中断)然后让控制权返回到您的程序.调用堆栈列出了程序的功能(以及调用了哪个父函数,以及"返回"语句的工作原理.).
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |