我正在嘗試從https://github.com/greenplum-db/gpbackup獲取 gpbackup 的完整呼叫樹。我使用 runtime/pprof,而不是 net/http/pprof,所以據我所知,收集統計資訊不應該有任何時間限制。我在程式的最開始啟動 pprof 服務器,并在 os.Exit() 命令之前停止它。為了收集統計資訊,我運行 gpbackup,它按預期作業,我得到 cpu.prof 輸出。然后我使用pprof --nodecount=100000 gpb cpu.prof并使用png命令生成一個呼叫樹。問題是呼叫樹缺少主要數量的功能。例如,DoBackup() 從記錄函式開始,但它們在呼叫樹中丟失了,而且還有許多其他函式似乎也沒有出現。如何讓 pprof 顯示呼叫樹中的每個呼叫?
uj5u.com熱心網友回復:
默認情況下,pprof洗掉CPU 時間少于0.5%的節點和CPU 時間少于0.1%的邊。您可以通過提供-nodefraction=0and-edgefraction=0標志來要求 pprof 不要這樣做,這可能會解決您的問題。
據我所知,收集統計資料不應該有任何時間限制
不完全正確,runtime/pprof 每秒采樣 100 次。每次采樣時,它都會捕獲完整的堆疊跟蹤。因此,如果函式的執行速度超過 100 秒,并且不屬于運行時間較長的函式的堆疊幀,那么您可能會錯過函式。
您可以復制StartCPUProfile和更改hz變數,以便更頻繁地捕獲。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409662.html
標籤:
