他们告诉你关于你的 Go 程序如何阅读 Go Mem Pprof Svg 文件

已发表: 2023-02-20

如果您想知道如何读取 go mem pprof svg 文件,那么您来对地方了。 在本文中,我们将向您展示如何阅读这些文件,以便您了解它们告诉您的有关您的 Go 程序的信息。 首先,让我们看一下这些文件到底是什么。 Go mem pprof svg 文件由 Go 内存分析器生成。 它们包含有关您的 Go 程序的内存使用情况的信息。 探查器通过查看程序的内存分配来收集此信息。 然后它会生成一份报告,您可以在浏览器中查看该报告。 该报告包含很多信息,但最重要的部分是顶部的图表。 此图显示您的程序正在使用的内存总量。 您可以通过将鼠标悬停在图表上来查看您的程序在任何给定时间使用了多少内存。 出现的数字是您的程序正在使用的内存量(以兆字节为单位)。 您还可以通过查看图表底部的图例来了解您的程序使用了多少内存。 此图例以不同颜色显示您的程序使用的内存量。 图例的绿色部分代表您的程序为其堆使用的内存量。 蓝色部分代表您的程序为其堆栈使用的内存量。 紫色部分表示您的程序为其垃圾收集器使用的内存量。 现在您知道了这些文件是什么以及它们包含什么,让我们来看看如何阅读它们。 您需要做的第一件事是在浏览器中打开文件。 您可以通过单击页面顶部的“在浏览器中打开”按钮来执行此操作。 打开文件后,您会在顶部看到图表。 正如我们之前提到的,该图显示了您的程序正在使用的内存总量。 您可以将鼠标悬停在图表上以查看您的程序在任何给定时间使用的内存量。 您还可以通过查看图表底部的图例来了解您的程序正在使用的内存量。 图例采用颜色编码,因此您可以轻松查看程序正在使用内存的哪一部分。 现在您知道如何阅读这些文件,您可以开始了解什么

如何在 Cpu Pprof 中查看 Profiler 输出?

如何在 Cpu Pprof 中查看 Profiler 输出?
图片来源 – golangexample

通过使用 -d 选项运行分析器,可以在 cpu pprof 中查看分析器输出。 这会将探查器数据输出到 -o 选项指定的文件。 通过打开浏览器的开发人员工具并选择配置文件选项卡,还可以在 Google Chrome 浏览器中查看分析器输出。

什么是 Pprof?

Pprof 是一个用于分析和操作分析数据的应用程序。 Pprof 在其分析结果中考虑了各种分析样本。 可以生成报告、可视化数据并使用原型格式对其进行分析。 点可视化包(可用于生成文本和图形报告)允许文本和图形报告。

下面哪个包可以用来查Go程序的内存使用情况?

内存分配样本在堆配置文件中报告,它们用于监视当前和历史内存使用情况。

我的 Linux 笔记本电脑上按内存和 Cpu 使用率排名前 10 的进程

下表列出了我的 Linux 笔记本电脑的内存和 CPU 使用率,排名前十的进程。 内存使用列描述了进程使用了​​多少内存,而 CPU 使用列描述了进程中使用了多少 CPU。

Pprof 工具

Pprof 工具
图片来自-github

pprof 工具是一个性能分析工具,允许您收集和分析有关您的Go 程序的数据。 您可以使用它来找出您的程序花费大部分时间的地方,并确定可以改进的瓶颈。

如何分析你的 Go 程序

上述方法的一个缺点是您必须运行 Web 服务器才能获取配置文件数据。 或者,如果您正在分析 Web 应用程序,您可能希望使用类似 Watcher 的工具。 pprof 包中包含工具 pprof,它与基于 web 的 curl 命令相同,以及 pprof-dev,它为正在分析的Go 包打印调试信息。

Pprof 配置文件 Pprof

Pprof 配置文件是一种性能配置文件,可用于识别应用程序中潜在的性能瓶颈。 它们提供应用程序性能的摘要,可用于查明可能需要进一步调查的区域。

在这篇文章中,我们将检查 pprof 的内部结构以及它们如何影响我们的配置文件,以了解它们是如何组合在一起的。 配置文件是该过程的第一步。 字符串序列化是通过 struct 完成的,它将字符串输入到字符串表中。 使用此结构序列化的字符串与使用 proto 序列化的字符串不同。 一个以字节为单位的 128 字节的函数被赋予了一个 sample(测量)sample。 该包的主要导入如下(os,测试): ggphy.com/Google/pprof/profile/package/mainimport.html TestProfile是一个 func 测试。 创建一个空的配置文件,在其中添加我们想要的一切。

使用样本类型时,请使用此类型。 * 轮廓。 本例中的值类型是 //。 如果你想让分配为人所知,你需要输入一个配置文件。 以字节为单位,//以单位为单位。 同样,值和样本类型以相同的方式排序。 下图是在运行测试 profile_test.go后使用工具 pprof – http://8080 profile.pb.gz 创建的。 似乎某些东西在进程内存中使用了 128B(字节)的内存。

因为它不知道位置在哪里,所以地图没有显示位置。 如果您使用映射,文件名将已经可见。 下次试试命名吧。 运行 go test profile_test.go 后,使用 go 再次打开配置文件。 该示例现在启用了元数据,如工具 pprof 所示 – http://8080 profile.pb.gz。 该配置文件与您目前在现实中可能期望的相去甚远,因此我们将制作一个更复杂的示例。 尽管Go 结构体可能没有直观意义,但通过从一个空的配置文件逐步计算出我们通常看到的重新组合,它会更容易理解。 如果每个配置文件包含许多此类堆栈跟踪,则它们可能会以与您通常的配置文件视图中相同的方式显示。 我们添加了一些示例、位置和函数以使过程更加真实,以便以更真实的方式表示堆栈跟踪。

Cpu.pprof 输出

cpu.pprof 输出提供了应用程序如何使用 CPU 的详细视图。 这对于性能分析和调整很有用。 可以生成各种格式的输出,包括文本、HTML 和 PDF。