與火焰圖互動
Cloud Profiler 會使用火焰圖顯示剖析資料。如需概念簡介,請參閱「火焰圖」。
火焰圖是由各個「框架」組成。每個框架都代表服務中的一個函式:
框架的寬度相當於該框架中要分析的指標的使用率。舉例來說,頂端框架代表整個服務並使用了要分析的指標的 100%。因此,這個框架會以完整寬度顯示。
在適當情況下,框架的色彩預設與函式的套件相對應。如果 Node.js 未隨附套件資訊,則來源檔案的名稱將用來為函式區塊加上顏色。在呼叫堆疊中,區塊顏色的變更代表從某套件移轉到另一個套件。您可以變更為框架加上顏色的方式。詳情請參閱色彩模式。
火焰圖顯示一或多個具有剖析資料匯總值的呼叫堆疊:
- 每一組個別剖析資料都代表在單一 Compute Engine 區域中,針對已設定服務的單一執行個體每分鐘收集一次的資料。剖析資料的收集期間與剖析資料類型不同。詳情請參閱「剖析資料收集」。
- 最多可計算 250 組剖析資料的平均值,如果可用的剖析資料超過 250 組,則系統會從中隨機挑選 250 組剖析資料來當做樣本集。
- 火焰圖中的頂端框架 (又稱「根框架」) 代表整個服務。「根框架」底下 (圖表中第二列) 則是另一個框架或另一組框架。這些加上色彩編碼的框架每一個都是由服務提出的頂層呼叫。在有顏色的每個函式框架底下則是另一組函式框架,其中每個都代表上方框架的特定資源部分。圖表中函式框架的階層代表呼叫序列,框架寬度則表示該函式或方法占用的資源使用比例。
舉例來說,docdemo-service 的使用堆疊 Profiler 圖表顯示該服務呼叫了不同的頂層框架,其中一個是 Go 執行階段的 main
函式。從這些頂層框架的寬度可看出,大部分堆疊都是由涉及 Go 執行階段的 main
、應用程式專屬 main
、allocOnce
和 allocImpl
的呼叫堆疊所使用:
根框架會顯示指標使用量資訊。
將滑鼠游標懸停在框架上
當您將滑鼠指標懸停在火焰圖中的框架上時,即可開啟框架工具提示,其中會顯示框架相關的額外資訊:
- 函式名稱
- 函式檔案名稱
- 絕對用量和百分比用量
在指標使用資訊中,前置詞「total」(總計) 列出的指標值和百分比是函式及其子項的總值;而「self」(本身) 則是指出函式本身的指標值和百分比,不含其子項的使用率。
對話方塊也會提供以下按鈕:
在這個例子中,工具提示顯示 runtime.main
函式位於 /usr/local/go/src/runtime/proc.go
檔案中。指標使用量資訊顯示 runtime.main
及其子項使用了 54.73 MiB 的記憶體,約相當於程式總記憶體使用量的 98%:
選取框架
當您選取框架時,系統就會重新繪製火焰圖,使該框架以完整寬度顯示,而呼叫堆疊中比目前所選框架更高的框架,其顏色將會調暗。選取框架並不會變更任何設定,只會改變圖表的顯示方式。您只要選取根 (頂端) 框架,就能將圖表還原為原始樣貌。
在以下範例中,滑鼠指標落在極小的框架上,不易查看呼叫堆疊。工具提示指出 (*huffmanBitWriter).write
為框架函式:
選取該框架後,系統就會重新繪製圖表,讓您可以更清楚地看到呼叫堆疊:
後續步驟
- 篩選火焰圖。
- 將火焰圖聚焦於特定函式。
- 查看歷來趨勢。
- 比較剖析資料。