他們告訴你關於你的 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。