<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pyroscope on Tarragon</title><link>https://tarrragon.github.io/blog/tags/pyroscope/</link><description>Recent content in Pyroscope on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/pyroscope/index.xml" rel="self" type="application/rss+xml"/><item><title>Pyroscope</title><link>https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/pyroscope/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/pyroscope/</guid><description>&lt;p>Pyroscope 的核心責任是提供開源 continuous profiling backend，讓團隊用 Grafana 生態保存、查詢、比較與視覺化 production profile。它適合偏 OSS-first、已使用 Grafana / Prometheus / Tempo / Loki 的團隊，重點在把 CPU、memory、allocation 與 profile diff 放進可自管 observability stack。Pyroscope 原為獨立 OSS 專案、&lt;em>2023 年被 Grafana Labs 收購&lt;/em>、現分兩條產品線：&lt;em>Grafana Pyroscope&lt;/em>（OSS、Apache 2.0、self-host）與 &lt;em>Grafana Cloud Profiles&lt;/em>（商業 SaaS、走 Grafana Cloud 計費）。&lt;/p>
&lt;h2 id="服務定位">服務定位&lt;/h2>
&lt;p>Pyroscope 在 continuous profiling 賽道上的差異點是 &lt;em>Grafana Labs 整合 + 多語言 SDK 覆蓋&lt;/em>、而不是 profiling 演算法本身。跟 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/parca/" data-link-title="Parca" data-link-desc="用 eBPF 與開源 continuous profiling 平台建立 infrastructure-wide profile evidence 的工具">Parca&lt;/a> 比、Parca 走 &lt;em>pprof + Prometheus-style label&lt;/em> 的 CNCF / eBPF infrastructure profiling 路線、focus 在 system-wide 一次抓全機；Pyroscope 走 &lt;em>per-language SDK + Grafana stack 整合&lt;/em> 的 developer-facing 路線、focus 在 application-level flame graph 與 release diff。跟 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/vendors/datadog-continuous-profiler/" data-link-title="Datadog Continuous Profiler" data-link-desc="用 SaaS APM 整合、deployment marker 與 profile diff 支援 release regression 定位的 profiling 工具">Datadog Continuous Profiler&lt;/a> 比、Datadog 走 &lt;em>SaaS all-in-one + APM 同 trace context&lt;/em>、profiling 自動跟 trace span 關聯；Pyroscope 走 &lt;em>self-host 可選 + Grafana 跨 signal&lt;/em>、整合靠 Grafana dashboard 跟 explore link 而非 product-level deep linking。&lt;/p>
&lt;p>這個定位讓 Pyroscope 接到 &lt;a href="https://tarrragon.github.io/blog/backend/04-observability/continuous-profiling/" data-link-title="4.9 Continuous Profiling" data-link-desc="把 CPU / memory / lock profile 從一次性除錯升級為持續訊號">4.9 Continuous Profiling&lt;/a> 與 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Performance Improvement Loop&lt;/a>。它的價值在於 OSS / Grafana 整合與可自管；它的代價在於 storage、retention、agent rollout 與營運責任要由團隊承擔。&lt;/p>
&lt;h2 id="最短判讀路徑">最短判讀路徑&lt;/h2>
&lt;p>判斷 Pyroscope deployment 是否健康、最少看四件事：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Agent / SDK setup&lt;/strong>：是用 &lt;em>language SDK&lt;/em>（in-process profiler、跟 application code 一起部署）還是 &lt;em>Grafana Alloy / Pyroscope agent&lt;/em>（out-of-process、適合 binary-only 或無法改 code 的 workload）— 兩條路 overhead、覆蓋率、tag 注入方式都不同&lt;/li>
&lt;li>&lt;strong>Push or pull model&lt;/strong>：SDK 預設 &lt;em>push&lt;/em>（application 主動把 profile sample 推到 Pyroscope server）、Alloy / agent 可走 &lt;em>pull&lt;/em>（scrape pprof endpoint、跟 Prometheus 同模型）— push 適合 short-lived job / serverless、pull 適合 long-running service + Kubernetes service discovery&lt;/li>
&lt;li>&lt;strong>Grafana integration&lt;/strong>：是否在 Grafana datasource 設好 Pyroscope、explore 是否能跨 trace / log / profile 跳轉（Tempo trace → Pyroscope profile by service+span）、dashboard 是否內嵌 flame graph panel&lt;/li>
&lt;li>&lt;strong>Tag schema discipline&lt;/strong>：service / version / region / environment / pod 是否一致命名、deploy event 是否打 label 讓 baseline / candidate 比較可成立&lt;/li>
&lt;/ul>
&lt;p>四件事任一缺失、profile 就只是「能看 flame graph」而非「release gate evidence」、無法支撐 &lt;a href="https://tarrragon.github.io/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Performance Improvement Loop&lt;/a> 的 diff workflow。&lt;/p></description><content:encoded><![CDATA[<p>Pyroscope 的核心責任是提供開源 continuous profiling backend，讓團隊用 Grafana 生態保存、查詢、比較與視覺化 production profile。它適合偏 OSS-first、已使用 Grafana / Prometheus / Tempo / Loki 的團隊，重點在把 CPU、memory、allocation 與 profile diff 放進可自管 observability stack。Pyroscope 原為獨立 OSS 專案、<em>2023 年被 Grafana Labs 收購</em>、現分兩條產品線：<em>Grafana Pyroscope</em>（OSS、Apache 2.0、self-host）與 <em>Grafana Cloud Profiles</em>（商業 SaaS、走 Grafana Cloud 計費）。</p>
<h2 id="服務定位">服務定位</h2>
<p>Pyroscope 在 continuous profiling 賽道上的差異點是 <em>Grafana Labs 整合 + 多語言 SDK 覆蓋</em>、而不是 profiling 演算法本身。跟 <a href="/blog/backend/09-performance-capacity/vendors/parca/" data-link-title="Parca" data-link-desc="用 eBPF 與開源 continuous profiling 平台建立 infrastructure-wide profile evidence 的工具">Parca</a> 比、Parca 走 <em>pprof + Prometheus-style label</em> 的 CNCF / eBPF infrastructure profiling 路線、focus 在 system-wide 一次抓全機；Pyroscope 走 <em>per-language SDK + Grafana stack 整合</em> 的 developer-facing 路線、focus 在 application-level flame graph 與 release diff。跟 <a href="/blog/backend/09-performance-capacity/vendors/datadog-continuous-profiler/" data-link-title="Datadog Continuous Profiler" data-link-desc="用 SaaS APM 整合、deployment marker 與 profile diff 支援 release regression 定位的 profiling 工具">Datadog Continuous Profiler</a> 比、Datadog 走 <em>SaaS all-in-one + APM 同 trace context</em>、profiling 自動跟 trace span 關聯；Pyroscope 走 <em>self-host 可選 + Grafana 跨 signal</em>、整合靠 Grafana dashboard 跟 explore link 而非 product-level deep linking。</p>
<p>這個定位讓 Pyroscope 接到 <a href="/blog/backend/04-observability/continuous-profiling/" data-link-title="4.9 Continuous Profiling" data-link-desc="把 CPU / memory / lock profile 從一次性除錯升級為持續訊號">4.9 Continuous Profiling</a> 與 <a href="/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Performance Improvement Loop</a>。它的價值在於 OSS / Grafana 整合與可自管；它的代價在於 storage、retention、agent rollout 與營運責任要由團隊承擔。</p>
<h2 id="最短判讀路徑">最短判讀路徑</h2>
<p>判斷 Pyroscope deployment 是否健康、最少看四件事：</p>
<ul>
<li><strong>Agent / SDK setup</strong>：是用 <em>language SDK</em>（in-process profiler、跟 application code 一起部署）還是 <em>Grafana Alloy / Pyroscope agent</em>（out-of-process、適合 binary-only 或無法改 code 的 workload）— 兩條路 overhead、覆蓋率、tag 注入方式都不同</li>
<li><strong>Push or pull model</strong>：SDK 預設 <em>push</em>（application 主動把 profile sample 推到 Pyroscope server）、Alloy / agent 可走 <em>pull</em>（scrape pprof endpoint、跟 Prometheus 同模型）— push 適合 short-lived job / serverless、pull 適合 long-running service + Kubernetes service discovery</li>
<li><strong>Grafana integration</strong>：是否在 Grafana datasource 設好 Pyroscope、explore 是否能跨 trace / log / profile 跳轉（Tempo trace → Pyroscope profile by service+span）、dashboard 是否內嵌 flame graph panel</li>
<li><strong>Tag schema discipline</strong>：service / version / region / environment / pod 是否一致命名、deploy event 是否打 label 讓 baseline / candidate 比較可成立</li>
</ul>
<p>四件事任一缺失、profile 就只是「能看 flame graph」而非「release gate evidence」、無法支撐 <a href="/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Performance Improvement Loop</a> 的 diff workflow。</p>
<h2 id="適用場景">適用場景</h2>
<p>自管 profiling backend 適合 Pyroscope。團隊若有資料主權、成本控制、內網部署或 OSS-first 要求，可以用 Pyroscope 保存 profile，降低 profile sample 外送帶來的治理成本。</p>
<p>Profile diff workflow 適合 Pyroscope。Release candidate、canary、baseline review 或 incident after-action 都可以用時間區間比較，找出 CPU、memory 或 allocation 的相對變化。</p>
<p>Grafana stack 整合適合 Pyroscope。若服務已經有 Grafana dashboard，profile link 可以放進 latency、CPU、memory、cost 或 release dashboard，讓 SRE 從聚合訊號跳到 callstack。</p>
<h2 id="選型判準">選型判準</h2>
<table>
  <thead>
      <tr>
          <th>判準</th>
          <th>Pyroscope 的價值</th>
          <th>需要補的能力</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>OSS / self-host</td>
          <td>profile 資料可自管</td>
          <td>backend storage、retention、upgrade</td>
      </tr>
      <tr>
          <td>Grafana 整合</td>
          <td>dashboard、explore、profile link 容易串接</td>
          <td>tag schema 與 dashboard discipline</td>
      </tr>
      <tr>
          <td>Profile diff</td>
          <td>時間區間與版本對比直觀</td>
          <td>deploy label 與 baseline 管理</td>
      </tr>
      <tr>
          <td>多語言 agent</td>
          <td>常見 runtime 可導入</td>
          <td>agent overhead 與覆蓋差異量測</td>
      </tr>
  </tbody>
</table>
<p>OSS / self-host 價值來自控制權。Profile 可能包含 function name、package path、tenant-specific code path 或敏感 business logic，自管能讓資料保存與存取控制更貼近內部規範。</p>
<p>Grafana 整合價值來自操作連續性。當 CPU dashboard、latency dashboard 與 deploy annotation 都在 Grafana 中，Pyroscope 能讓工程師從圖表直接切到 flame graph。</p>
<h2 id="跟其他工具的取捨">跟其他工具的取捨</h2>
<p>Pyroscope 和 Datadog Continuous Profiler 的主要差異是平台責任。Pyroscope 偏 OSS / self-host / Grafana stack；Datadog 偏 SaaS all-in-one 與 APM product workflow。</p>
<p>Pyroscope 和 Parca 的主要差異是生態定位。Pyroscope 偏 Grafana profiling backend 與 developer-facing flame graph；Parca 偏 eBPF / infrastructure-wide profiling 與 CNCF 生態。</p>
<p>Pyroscope 和一次性 profiler 的主要差異是可比較性。一次性 profiler 擅長局部調查；Pyroscope 擅長讓 profile 成為 release baseline 與 incident evidence。</p>
<h2 id="核心取捨表">核心取捨表</h2>
<table>
  <thead>
      <tr>
          <th>取捨維度</th>
          <th>Pyroscope（Grafana）</th>
          <th>Parca</th>
          <th>Datadog Continuous Profiler</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>部署模型</td>
          <td>OSS self-host / Grafana Cloud Profiles SaaS</td>
          <td>OSS self-host（CNCF Sandbox）</td>
          <td>SaaS only</td>
      </tr>
      <tr>
          <td>Profile 來源</td>
          <td>language SDK + Alloy / agent（push 為主）</td>
          <td>pprof scrape（pull）+ Parca Agent（eBPF）</td>
          <td>Datadog Agent + language tracer 整合</td>
      </tr>
      <tr>
          <td>語言覆蓋</td>
          <td>Go / Python / Java / Ruby / .NET / Rust / Node</td>
          <td>任何能輸出 pprof 的 runtime + eBPF system-wide</td>
          <td>Go / Python / Java / Ruby / .NET / Node</td>
      </tr>
      <tr>
          <td>Tag / label</td>
          <td>Prometheus-style label + 自訂 tag</td>
          <td>Prometheus-style label</td>
          <td>Datadog tag（跟 APM 共用）</td>
      </tr>
      <tr>
          <td>Diff workflow</td>
          <td>時間區間 + label 對比 + flame graph diff UI</td>
          <td>時間區間 + label 對比</td>
          <td>自動跟 deploy event + trace span 關聯</td>
      </tr>
      <tr>
          <td>整合方向</td>
          <td>Grafana（Tempo / Loki / Mimir 互跳）</td>
          <td>Prometheus / Grafana（弱整合）</td>
          <td>Datadog APM / Logs / Metrics 同 plane</td>
      </tr>
      <tr>
          <td>適合場景</td>
          <td>Grafana-first、OSS-friendly、release diff 主流程</td>
          <td>infrastructure-wide eBPF profiling、CNCF 生態</td>
          <td>Datadog 已是主 observability、要 APM 連動</td>
      </tr>
  </tbody>
</table>
<p>選 Pyroscope 的核心訴求：<em>已用 Grafana stack + 多語言服務組合 + 要 OSS self-host 選項或預算敏感</em>、profile 主要用途是 release diff / incident hot-path 定位、不需要 APM-level 自動 trace 關聯。</p>
<h2 id="操作成本">操作成本</h2>
<p>Pyroscope 的主要成本是自管 backend。Profile ingest、storage、retention、compaction、backup、upgrade 與 dashboard ownership 都需要團隊負責。</p>
<p>Tag 成本來自查詢維度。service、version、region、environment、runtime、pod、tenant 這些 label 能提高定位能力，也會增加 cardinality、儲存與查詢成本。</p>
<p>Agent 成本來自 rollout 與 overhead。導入時要先選代表性服務，量測 profiler 對 CPU、memory、latency 的影響，再逐步擴大到 critical path。</p>
<h2 id="evidence-package">Evidence Package</h2>
<p>Pyroscope 結果應回寫到 evidence package。最小欄位包括 service、version、environment、profile type、baseline window、candidate window、profile diff link、tag set、retention policy、overhead estimate、known gap 與 owner。</p>
<table>
  <thead>
      <tr>
          <th>欄位</th>
          <th>Pyroscope 證據來源</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Source</td>
          <td>profile query、flame graph、diff link</td>
      </tr>
      <tr>
          <td>Time range</td>
          <td>baseline / candidate profile window</td>
      </tr>
      <tr>
          <td>Query link</td>
          <td>Grafana / Pyroscope explore link</td>
      </tr>
      <tr>
          <td>Data quality</td>
          <td>tag completeness、sampling status</td>
      </tr>
      <tr>
          <td>Confidence</td>
          <td>production coverage、agent overhead</td>
      </tr>
      <tr>
          <td>Known gap</td>
          <td>未覆蓋 runtime、tag drift、retention gap</td>
      </tr>
  </tbody>
</table>
<p>Evidence package 的核心用途是讓 profile diff 成為 release artifact。Reviewer 要能從 release gate 打開 Pyroscope diff，確認變化來自 code path、runtime 行為、負載變化或 baseline drift。</p>
<h2 id="進階主題">進階主題</h2>
<p><strong>Grafana Cloud Profiles</strong>：商業 SaaS 版本、走 Grafana Cloud 計費（per-series 或 per-profile bytes）、適合不想自管 storage / retention / compaction 的團隊。跟 OSS Pyroscope 共用 SDK 跟 query API、可在 OSS 起步、規模到一定程度再遷移到 Cloud、避免廠商一開始就鎖死。</p>
<p><strong>Flame graph diff</strong>：Pyroscope 的核心 release workflow — 選 baseline window（release 前 24hr）跟 candidate window（release 後 24hr）、UI 把兩張 flame graph 差異標紅綠、可直接看到哪個 function 變慢 / 變快。判讀要點是 <em>baseline window 要排除部署當下的 warm-up / cache miss spike</em>、否則 diff 噪音蓋過真實 regression。</p>
<p><strong>多語言 SDK 覆蓋</strong>：Pyroscope 官方 SDK 覆蓋 Go / Python / Java / Ruby / .NET / Rust / Node.js — Go SDK 用 <code>runtime/pprof</code> 包裝、Java 走 async-profiler、Python 走 <code>py-spy</code> 風格 sampling profiler、Node.js 走 V8 sampling。各 SDK overhead 不一致（Java async-profiler ~1%、Python py-spy ~3-5%）、選型時要看代表性服務量測再 rollout、不能假設「都很低」。</p>
<p><strong>Adhoc profiling</strong>：當 production SDK 沒裝、或想對 batch job / CLI tool 做一次性 profile、可用 Pyroscope CLI 上傳 <em>standalone pprof file</em>（<code>pyroscope adhoc</code> 或 <code>profilecli</code>）— 補位「標準 pprof endpoint 不夠用、但又不想長期 instrument」的情境。對 ad-hoc incident investigation 跟 batch job postmortem 特別有用。</p>
<p><strong>Grafana Alloy 整合</strong>：Grafana Alloy（前 Grafana Agent）內建 Pyroscope receiver、可同時 scrape Prometheus metrics + tail Loki log + push Tempo trace + scrape Pyroscope profile、單一 agent 跨 four signal、降低 sidecar 數量跟維運成本。</p>
<h2 id="排錯與失敗快速判讀">排錯與失敗快速判讀</h2>
<ul>
<li><strong>SDK overhead 過高 / latency p99 上升</strong>：profile sample rate 太高、或 Java async-profiler 在低 CPU host 競爭 schedule — 降 sample rate、staging 量測 CPU / latency delta 確認 &lt; 3% 再 promote</li>
<li><strong>Push agent 跟 pull agent 取捨錯</strong>：short-lived job 用 pull 結果還沒被 scrape 就 exit、long-running service 用 push 結果 Pyroscope server 過載 — short-lived / serverless 走 SDK push、long-running + Kubernetes service discovery 走 Alloy pull</li>
<li><strong>Label cardinality 爆 / storage 跟查詢都慢</strong>：tag 加了 pod name / request ID / user ID 等高 cardinality 維度 — 限制 tag 為 service / version / region / environment / cluster 等低 cardinality、高基數維度走 trace / log 別放 profile</li>
<li><strong>Baseline / candidate diff 全是噪音</strong>：baseline window 沒對齊流量模式（off-peak vs peak）、或 deploy label 沒打 — 要求 release pipeline 自動寫 <code>version</code> / <code>deploy_id</code> label、diff window 跨完整流量週期（24hr or 7day）</li>
<li><strong>Grafana datasource 連不到 / explore 跳轉失敗</strong>：datasource URL 設錯、或 service / span tag 不一致 — Tempo trace 用的 <code>service.name</code> 要跟 Pyroscope <code>service</code> label 對齊、否則 cross-signal 跳轉斷裂</li>
<li><strong>Storage / retention 失控</strong>：profile 保留太久、SmartStore-like 冷儲存沒設 — Pyroscope OSS 支援 object storage（S3 / GCS）backend、長 retention 必開、不然 PV 會爆</li>
</ul>
<h2 id="何時改走其他服務">何時改走其他服務</h2>
<table>
  <thead>
      <tr>
          <th>需求形狀</th>
          <th>改走</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>已用 Datadog APM、要 trace ↔ profile 自動關聯</td>
          <td><a href="/blog/backend/09-performance-capacity/vendors/datadog-continuous-profiler/" data-link-title="Datadog Continuous Profiler" data-link-desc="用 SaaS APM 整合、deployment marker 與 profile diff 支援 release regression 定位的 profiling 工具">Datadog Continuous Profiler</a></td>
      </tr>
      <tr>
          <td>要 eBPF system-wide / infrastructure profiling</td>
          <td><a href="/blog/backend/09-performance-capacity/vendors/parca/" data-link-title="Parca" data-link-desc="用 eBPF 與開源 continuous profiling 平台建立 infrastructure-wide profile evidence 的工具">Parca</a></td>
      </tr>
      <tr>
          <td>不想自管 backend、但要 Grafana stack</td>
          <td>Grafana Cloud Profiles（商業 SaaS、同 SDK）</td>
      </tr>
  </tbody>
</table>
<h2 id="案例回寫">案例回寫</h2>
<p>Pyroscope 適合回寫 OSS observability 與 release diff 案例。它可接 <a href="/blog/backend/09-performance-capacity/cases/netflix-aurora-consolidation/" data-link-title="9.C23 Netflix：把關聯式 DB 統一到 Aurora、效能 &#43;75%、成本 -28%" data-link-desc="Netflix 把多套關聯式 DB 統一到 Aurora、效能提升 75%、成本下降 28%、串流數十億小時">9.C23 Netflix Aurora consolidation</a> 的 profile noise 降低、<a href="/blog/backend/09-performance-capacity/cases/tubi-elasticache-ml-feature-store/" data-link-title="9.C25 Tubi：從 ScyllaDB 遷到 ElastiCache、ML feature store 達 sub-10ms p99" data-link-desc="Tubi 把 ML 推薦的 feature store 從 ScyllaDB 遷到 ElastiCache for Redis、99 百分位延遲降到 10ms 以下">9.C25 Tubi feature store</a> 的 hot path 定位、<a href="/blog/backend/09-performance-capacity/cases/riot-games-eks-multi-cluster/" data-link-title="9.C12 Riot Games：246 個 EKS cluster 的多遊戲多地區治理" data-link-desc="Riot Games 從 Mesos 遷移到 EKS、用 246 個 cluster 跨遊戲跨地區治理、年省 1000 萬美金">9.C12 Riot Games EKS multi-cluster</a> 的 single-tenant per game profile 隔離、<a href="/blog/backend/09-performance-capacity/cases/capcom-gaming-dynamodb-eks/" data-link-title="9.C19 Capcom：Resident Evil / Monster Hunter 在 DynamoDB &#43; EKS 上的遊戲後端" data-link-desc="Capcom 把 Resident Evil、Street Fighter、Monster Hunter 遊戲後端跑在 DynamoDB &#43; EKS、單一秒位數延遲、營運成本降 30%">9.C19 Capcom 遊戲後端</a> 的 30% 成本下降 hot path 分析，以及 <a href="/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Improvement Loop</a> 的 baseline / candidate profile diff。</p>
<p>這些案例的重點是可比較 profile。Pyroscope 頁引用案例時，要把 case 轉成 tag schema、baseline window、candidate window、flame graph diff 與 release gate evidence — 例如 Riot Games 246 cluster 的 tag schema 必須涵蓋 game / region / cluster 三維、才能避免「跨遊戲混合 profile」的歸因錯誤。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>上游：<a href="/blog/backend/09-performance-capacity/improvement-loop/" data-link-title="9.9 Performance Improvement Loop" data-link-desc="壓測 → profile → fix → re-test → release gate 的閉環">9.9 Performance Improvement Loop</a></li>
<li>上游：<a href="/blog/backend/09-performance-capacity/performance-observability/" data-link-title="9.8 效能可觀測性" data-link-desc="saturation metric、USE / RED method、cost dashboard">9.8 效能可觀測性</a></li>
<li>跨模組：<a href="/blog/backend/04-observability/continuous-profiling/" data-link-title="4.9 Continuous Profiling" data-link-desc="把 CPU / memory / lock profile 從一次性除錯升級為持續訊號">4.9 Continuous Profiling</a></li>
<li>平行：<a href="/blog/backend/09-performance-capacity/vendors/datadog-continuous-profiler/" data-link-title="Datadog Continuous Profiler" data-link-desc="用 SaaS APM 整合、deployment marker 與 profile diff 支援 release regression 定位的 profiling 工具">Datadog Continuous Profiler</a></li>
<li>平行：<a href="/blog/backend/09-performance-capacity/vendors/parca/" data-link-title="Parca" data-link-desc="用 eBPF 與開源 continuous profiling 平台建立 infrastructure-wide profile evidence 的工具">Parca</a></li>
<li>官方：<a href="https://grafana.com/docs/pyroscope/latest/">Grafana Pyroscope documentation</a></li>
</ul>
]]></content:encoded></item></channel></rss>