我正在寻找gperftools如何工作的简单解释。到目前为止,这是我所学到的:Gperftools如何在引擎盖下工作?
- 它运行一个世界停止采样器。换句话说,它会定期停止正在分析收集信息的程序。
- Golang的pprof库使用下面的gperftools。
除了总体概述,下面是我想回答一些具体的问题:
- 是gperftools的 “event based profiler” 或 “instrumentation profiler”。据我所知,这些配置文件修改程序运行的方式并通过这些修改收集示例
- 操作系统中的哪个“级别”确定gperftools配置文件?它是否像SystemTap或perf那样描绘内核?
- Gperftools是否可以安全地在高流量的生产服务器上运行?
我在问这个问题,以推断在Go服务器上使用pprof引入的开销。
+1这并不是很好的理解,如何信息堆栈样本实际是如何,特别是如果个别的检查。可悲的是,这种缺乏理解会导致一个普遍的假设,即需要大量的这些假设,因此必须对它们进行总结(自我时间,累积时间,呼叫图,火焰图等)。这很容易大型加速器可以隐藏在这些摘要中,但是他们无法掩盖程序员仅仅检查少量样本的情况。 [* Examples。*](http://stackoverflow.com/a/25870103/23771) –
SIGPROF由间隔计时器生成,['setitimer()'](http://man7.org/linux/man -pages/man2/setitimer.2.html) - https://github.com/gperftools/gperftools/blob/7822b5b0b9fa7e016e1f6b46ea86f26f4691a457/src/profile-handler.cc#L482'setitimer(timer_type_,&timer,0);' – osgx