问题标签 [google-perftools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
92 浏览

ruby - perftools.rb 输出中的模块#__temp__

在分析我们的一些 Ruby 代码时 perftools.rb 显示以下输出:

因此,大部分时间都花在了指定为 的方法上#<Module:0x007ff364e2bfd0>#__temp__。我如何获得更多关于这确切位置的信息?

0 投票
0 回答
988 浏览

profiling - 解释 GPerfTools 样本计数

我在阅读 GPerfTools 生成的文本输出时有些吃力。我认为部分问题在于我不完全了解采样方法的运作方式。

Wikipedia我收集到基于示例函数的分析器通常通过向操作系统发送中断并查询程序的当前指令指针来工作。现在我对汇编的了解有点生疏,所以我想知道如果指令指针m在任何给定时间指向方法意味着什么?即这是否意味着该函数即将被调用,或者它是否意味着它当前正在执行,或两者兼而有之?

如果我没记错的话会有区别,因为在第一种情况下,样本计数(即在采样时看到 m 的次数)转换为 m 的绝对调用计数,而在后一种情况下,它只是转换为看到的次数,即仅表示在此方法中花费的相对时间。

有人可以澄清吗?

0 投票
2 回答
5446 浏览

gcc - gperftools CPU profiler 究竟是如何启动的?

gperftools 文档libprofiler应该链接到目标程序:

(不改变程序的代码)。

然后程序应该使用特定的环境变量运行:

问题是:如何libprofile有机会启动和完成一个分析器,当它只是被加载,但它的函数没有被调用?

该库中没有构造函数(proof)。 库代码中“CPUPROFILE”的所有场合均不涉及启动分析器的任何地方。

我没有想法,下一步该去哪里看?

0 投票
2 回答
19195 浏览

go - 如何在 Go 程序中使用 pprof

如何在 Go 程序中使用 pprof?

有一个名为net/http/pprof的 Go 包,但我不能使用它。

该文件说go tool pprof http://localhost:6060/debug/pprof/heap,这是行不通的。

而且,下面的_是什么意思?

import _ "net/http/pprof"

0 投票
0 回答
895 浏览

profiling - 合并几个 google-pprof 文件(pproc CPU profiler)

我想使用 google-perftools(gperftools 的 libprofiler.so)中的 CPU Profiler,如下所述:http: //gperftools.googlecode.com/svn/trunk/doc/cpuprofile.html

在我的设置中,我想运行程序进行多次分析(最多 1500 次;每次运行都不同),然后将所有运行(或运行的某些子集)的 pprof 输出合并到单个 pprof 文件中。

我怎样才能做到这一点?

PS:我的程序几乎不使用共享库,因此只会分析单个二进制(elf)文件。

PPS:感谢 Chris,pprof 可以使用多个配置文件:

0 投票
1 回答
1087 浏览

c++ - 使用 google perftools 时,SIGPROF 会杀死我的服务器

我有一个多线程服务器进程,用 C/C++ 编写,我正在尝试使用 Google perftools 进行分析。但是,当我使用 perftools 运行该进程时,我的服务器很快就会停止并出现“系统调用中断”错误,我认为这是由传入的 SIGPROF 引起的。(被中断的实际系统调用在我对zmq_recv的调用中很深,但我认为它是哪一个并不重要。)

这是预期的行为吗?我应该以某种方式明确处理这种情况吗?或者这里出了什么问题?

0 投票
2 回答
2159 浏览

linux - gperftools cpu profiler 不支持多进程?

根据文档http://gperftools.googlecode.com/svn/trunk/doc/cpuprofile.html,cpu 配置文件确实支持多进程并将生成独立的输出文件:

如果你的程序分叉,子进程也将被分析(因为它们继承了相同的 CPUPROFILE 设置)。每个过程都单独分析;为了将子配置文件与父配置文件以及彼此区分开来,所有子配置文件都将其进程 ID 附加到 CPUPROFILE 名称。

但是当我尝试如下:

// main_cmd_argv.cpp

// 生成文件

// 外壳命令

看来gperf不支持多进程,有人可以解释一下吗?谢谢!

0 投票
0 回答
891 浏览

google-perftools - 如何在 google-perftools 堆分析器的堆栈跟踪中显示符号

我们在 TDD 环境中使用 google-perftools 堆分析器。最后我们得到堆转储,我们可以使用 pprof 来查看热点。它显示了符号,但几乎没有提供有关如何在堆栈中到达泄漏的信息。事实上,我可以看到输出中没有任何组织。

最大泄漏的堆栈跟踪在运行时显示,但不显示任何符号。我们正确设置了 PPROF_PATH 环境变量,但它没有任何效果。我们如何启用它?

0 投票
1 回答
864 浏览

c++ - 我使用 gperftools 使用 RCpp 分析 R 脚本是否正确?

我正在尝试使用http://pj.freefaculty.org/blog/?p=140中的最后一种(第三种)方法来分析 R 脚本。我想知道我所做的(如下所述)是否正确?

首先,在 中my.cpp,链接说要添加#include <gperftools/profiler.h>,这对我不起作用。我发现标头位于不同的目录中,对我有用的是#include <google/profiler.h>.

然后我将以下内容放在一些要分析的代码周围

接下来,我创建了一个脚本 mytest.R,其中包含以下内容

最后,当我在 bash 中运行时

它运行一个 R 会话,运行mytest.RR 内部的内容,并在输出后退出 R

这是否意味着分析已成功运行?“中断”和“驱逐”对我来说看起来很麻烦。

它确实生成分析输出到myprofile.log,

我可以看到

最后一列中没有任何条目是人类可读的,所以我想知道是否有某种方法可以使它们可读?

我想知道我是否错过了什么?谢谢!

0 投票
1 回答
1209 浏览

google-perftools - gperftools 如何在后台工作?

我正在寻找gperftools如何工作的简单解释。到目前为止,这是我学到的:

  • 它运行一个停止世界的采样器。换句话说,它会定期停止正在分析的程序以收集信息。
  • Golang 的 pprof 库在下面使用 gperftools。

除了一般概述之外,还有一些我想回答的具体问题:

  • gperftools 是“基于事件的分析器”还是“检测分析器”。据我了解,这些分析器通过这些修改修改程序运行和收集样本的方式
  • gperftools 配置文件在操作系统的哪个“级别”?它是否像SystemTapperf那样分析内核?
  • gperftools 在高流量生产服务器上运行是否安全?

我问这个问题是为了解释在 Go 服务器上使用 pprof 引入的开销。