Skip to content

Commit

Permalink
[DOC] Updates to correct minor issues in intro doc (#3089)
Browse files Browse the repository at this point in the history
  • Loading branch information
knylander-grafana authored Mar 12, 2024
1 parent 48d0e99 commit 58f4cab
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 16 deletions.
6 changes: 3 additions & 3 deletions docs/sources/get-started/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ Choose one of the following options to get started with Pyroscope:

- The **written tutorial** below provides a series of imperative commands to start a single Pyroscope process, or [monolith]({{< relref "../reference-pyroscope-architecture/deployment-modes/index.md#monolithic-mode" >}}), which is designed for users getting started with the project.

- The following **video tutorial** uses [`docker-compose`](https://github.com/grafana/pyroscope/tree/main/tools/docker-compose) to declaratively deploy Pyroscope and Grafana.

{{< youtube id="XL2yTCPy2e0" >}}
- You can also use [`docker-compose`](https://github.com/grafana/pyroscope/tree/main/tools/docker-compose) to declaratively deploy Pyroscope and Grafana.

For more information on the different ways to deploy Pyroscope, see [Pyroscope deployment modes]({{< relref "../reference-pyroscope-architecture/deployment-modes/index.md" >}}).

{{< youtube id="XL2yTCPy2e0" >}}

## Before you begin

Verify that you have installed [Docker](https://docs.docker.com/engine/install/).
Expand Down
5 changes: 4 additions & 1 deletion docs/sources/introduction/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ keywords:

Grafana Pyroscope is a multi-tenant continuous profiling aggregation system, aligning its architectural design with Grafana Mimir, Grafana Loki, and Grafana Tempo. It facilitates the ingestion, storage, and querying of profiles and seamlessly integrates with Grafana, enabling a cohesive correlation of profiling data with existing metrics, logs, and traces.

Engineers utilizing Pyroscope gain the ability to delve deep into the performance attributes and resource demands of their applications. Boasting an intuitive interface coupled with a vivid data visualization, Pyroscope transforms raw profiling data into readily actionable insights.
Engineers using Pyroscope gain the ability to delve deep into the performance attributes and resource demands of their applications.
Boasting an intuitive interface coupled with a vivid data visualization, Pyroscope transforms raw profiling data into readily actionable insights.

{{< youtube id="XL2yTCPy2e0" >}}

## Why Pyroscope

Expand Down
7 changes: 4 additions & 3 deletions docs/sources/view-and-analyze-profile-data/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@ You can export profiling data from Pyroscope in various formats:

Integrating Pyroscope with Grafana is a common and recommended approach for visualizing profiling data. Grafana, being a powerful tool for data visualization, can effectively display profiling data in an accessible and insightful manner.

Options for Visualizing Data in Grafana:
Options for visualizing data in Grafana:

- **Pyroscope App Plugin**: This plugin is specifically designed for Pyroscope data. It allows for easy browsing, analysis, and comparison of multiple profiles across different labels or time periods. This is particularly useful for a comprehensive overview of your application's performance.
- **Explore Tab**: In Grafana, the Explore tab is suited for making targeted queries on your profiling data. This is useful for in-depth analysis of specific aspects of your application's performance.
- **Explore tab**: In Grafana, **Explore** is suited for making targeted queries on your profiling data. This is useful for in-depth analysis of specific aspects of your application's performance.
- **Dashboard**: Grafana dashboards are excellent for integrating profiling data with other metrics. You can display Pyroscope data alongside other dashboard items, creating a unified view of your application’s overall health and performance.

For more information on using profiles in Grafana, refer to [Pyroscope and profiles in Grafana]({{< relref "../introduction/pyroscope-in-grafana#pyroscope-and-profiling-in-grafana" >}}).

The Pyroscope app plugin works for Grafana Cloud.
The Pyroscope app plugin works for Grafana Cloud.

For more information on configuring these data sources, refer to the Pyroscope data source documentation in [Grafana Cloud](/docs/grafana-cloud/connect-externally-hosted/data-sources/grafana-pyroscope/) and [Grafana](/docs/grafana/latest/datasources/grafana-pyroscope/).
4 changes: 4 additions & 0 deletions docs/sources/view-and-analyze-profile-data/flamegraphs.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,7 @@ The nodes below those represent the functions that were called from those functi
This continues until you reach the bottom of the flamegraph.

This is a CPU profile, but profiles can represent many other types of resource such as memory, network, disk, etc.

## Flamegraph visualization panel UI

To learn more about the flamegraph user interface, refer to [Flame graph visualization panel](https://grafana.com/docs/grafana-cloud/visualizations/panels-visualizations/visualizations/flame-graph).
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ keywords:

# Understand profiling types and their uses in Pyroscope

Profiling is an essential tool for understanding and optimizing application performance. In Pyroscope, various profiling types allow for an in-depth analysis of different aspects of your application. This guide will explore these types and explain their impact on your program.
Profiling is an essential tool for understanding and optimizing application performance. In Pyroscope, various profiling types allow for an in-depth analysis of different aspects of your application. This guide explores these types and explain their impact on your program.

## Profiling types

In Pyroscope, profiling types refer to different dimensions of application performance analysis, focusing on specific aspects like CPU usage, memory allocation, or thread synchronization.

## Available profile types

Various languages support different profiling types. Pyroscope supports the following profiling types as of `v1.2.0`:
Various languages support different profiling types. Pyroscope supports the following profiling types as of `v1.4.0`:

| Profile Type | Go | Java | .NET | Ruby | Python | Rust | Node.js | eBPF (Go) | eBPF (Python) |
|--------------------|-------|-------|-------|-------|--------|-------|---------|-----------|--------------|
Expand Down Expand Up @@ -51,26 +51,31 @@ CPU profiling measures the amount of CPU time consumed by different parts of you
- **When to use**: To identify and optimize CPU-intensive functions
- **Flamegraph insight**: The width of blocks indicates the CPU time consumed by each function

![example flamegraph](https://grafana.com/static/img/pyroscope/pyroscope-ui-single-2023-11-30.png)
As you can see here, the UI is showing a spike in CPU along with the flamegraph associated with that spike.
Often times without profiling you may get similar insights from metrics, but with profiling you have more details into the specific cause of a spike in CPU usage at the line level

As you can see here the UI is showing a spike in CPU along with the flamegraph associated with that spike. Often times without profiling you may get similar insights from metrics, but with profiling you have more details into the specific cause of a spike in CPU usage at the line level
![example flamegraph](https://grafana.com/static/img/pyroscope/pyroscope-ui-single-2023-11-30.png)

<!-- ## FGprof (for go)
[todo add a link to the docs for fgprof] -->

## Memory allocation profiling

Memory allocation profiling tracks the amount and frequency of memory allocations by the application. Excessive or inefficient memory allocation can lead to memory leaks and high garbage collection overhead, impacting application efficiency.
Memory allocation profiling tracks the amount and frequency of memory allocations by the application.
Excessive or inefficient memory allocation can lead to memory leaks and high garbage collection overhead, impacting application efficiency.

- **Types**: Alloc Objects, Alloc Space
- **When to use**: For identifying and optimizing memory usage patterns
- **Flamegraph insight**: Highlights functions where memory allocation is high

![memory leak example](https://grafana.com/static/img/pyroscope/pyroscope-memory-leak-2023-11-30.png)
The timeline shows memory allocations over time and is great for debugging memory related issues.
A common example is when a memory leak is created due to improper handling of memory in a function.
This can be identified by looking at the timeline and seeing a gradual increase in memory allocations that never goes down.
This is a clear indicator of a memory leak.

The timeline shows memory allocations over time and is great for debugging memory related issues. A common example is when a memory leak is created due to improper handling of memory in a function. This can be identified by looking at the timeline and seeing a gradual increase in memory allocations that never goes down. This is a clear indicator of a memory leak.
![memory leak example](https://grafana.com/static/img/pyroscope/pyroscope-memory-leak-2023-11-30.png)

Without profiling this is may be something that is exhibited in metrics or OOM logs but with profiling you have more details into the specific function that is allocating the memory which is causiing the leak at the line level.
Without profiling, this is may be something that's exhibited in metrics or out-of-memory errors (OOM) logs but with profiling you have more details into the specific function that's allocating the memory which is causing the leak at the line level.

## Goroutine profiling

Expand All @@ -93,6 +98,6 @@ Block profiling measures the frequency and duration of blocking operations, wher

- **Types**: Block Count, Block Duration
- **When to use**: To identify and reduce blocking delays
- **Flamegraph insight**: Identifies where and how long threads are being blocked
- **Flamegraph insight**: Identifies where and how long threads are blocked

<!-- # Next Steps: Exploring Pyroscope's UI(link to ui analysis docs) -->

0 comments on commit 58f4cab

Please sign in to comment.