github.com/grafana/pyroscope@v1.18.0/docs/sources/configure-client/profile-types.md (about)

     1  ---
     2  title: Profile types and instrumentation
     3  menuTitle: Profile types and instrumentation
     4  description: Learn about the different profiling types available in Pyroscope and
     5  weight: 100
     6  aliases:
     7    - ../ingest-and-analyze-profile-data/profiling-types/
     8    - ../view-and-analyze-profile-data/profiling-types/ # /docs/pyroscope/latest/view-and-analyze-profile-data/profiling-types/
     9  keywords:
    10    - pyroscope
    11    - profiling types
    12    - application performance
    13    - flame graphs
    14  ---
    15  
    16  # Profile types and instrumentation
    17  
    18  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.
    19  
    20  Profiling types refer to different dimensions of application performance analysis, focusing on specific aspects like CPU usage, memory allocation, or thread synchronization.
    21  
    22  [//]: # 'Shared content for available profile types'
    23  [//]: # 'This content is located in /pyroscope/docs/sources/shared/available-profile-types.md'
    24  
    25  {{< docs/shared source="pyroscope" lookup="available-profile-types.md" version="latest" >}}
    26  
    27  Refer to [Understand profiling types and their uses in Pyroscope](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/introduction/profiling-types/) for more details about the profile types.
    28  
    29  ## Profile type support by instrumentation method
    30  
    31  The instrumentation method you use determines which profile types are available. You can use either auto or manual instrumentation.
    32  
    33  ### Auto-instrumentation with Grafana Alloy
    34  
    35  You can send data from your application using Grafana Alloy collector. Alloy supports profiling with eBPF, Java, and Golang in pull mode.
    36  
    37  [//]: # 'Shared content for supported languages with eBPF'
    38  [//]: # 'This content is located in /pyroscope/docs/sources/shared/supported-languages-ebpf.md'
    39  
    40  {{< docs/shared source="pyroscope" lookup="supported-languages-ebpf.md" version="latest" >}}
    41  
    42  For more information, refer to [Configure the client to send profiles with Grafana Alloy](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/grafana-alloy/).
    43  
    44  This table lists the available profile types based on auto instrumentation using Alloy.
    45  
    46  | Profile type   | Go (pull) | Java | eBPF      |
    47  | -------------- | --------- | ---- | --------- |
    48  | CPU            | Yes       | Yes  | Yes       |
    49  | Alloc Objects  | Yes       | Yes  |           |
    50  | Alloc Space    | Yes       | Yes  |           |
    51  | Inuse Objects  |           |      |           |
    52  | Inuse Space    |           |      |           |
    53  | Goroutines     | Yes       |      |           |
    54  | Mutex Count    |           |      |           |
    55  | Mutex Duration |           |      |           |
    56  | Block Count    | Yes       |      |           |
    57  | Block Duration | Yes       |      |           |
    58  | Lock Count     |           | Yes  |           |
    59  | Lock Duration  |           | Yes  |           |
    60  | Exceptions     |           |      |           |
    61  | Wall           |           |      |           |
    62  | Heap           |           |      |           |
    63  
    64  ### Instrumentation with SDKs
    65  
    66  Using the Pyroscope language SDKs lets you instrument your application directly for precise profiling. You can customize the profiling process according to your application’s specific requirements.
    67  
    68  For more information on the language SDKs, refer to [Pyroscope language SDKs](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/language-sdks/).
    69  
    70  This table lists the available profile types based on the language SDK.
    71  
    72  | Profile type   | Go (push) | Java | .NET       | Ruby | Python | Rust | Node.js |
    73  | -------------- | --------- | ---- | ---------- | ---- | ------ | ---- | ------- |
    74  | CPU            | Yes       | Yes  | Yes        | Yes  | Yes    | Yes  | Yes     |
    75  | Alloc Objects  | Yes       | Yes  | Yes        |      |        |      |         |
    76  | Alloc Space    | Yes       | Yes  | Yes        |      |        |      |         |
    77  | Inuse Objects  | Yes       |      | Yes (7.0+) |      |        |      |         |
    78  | Inuse Space    | Yes       |      | Yes (7.0+) |      |        |      |         |
    79  | Goroutines     | Yes       |      |            |      |        |      |         |
    80  | Mutex Count    | Yes       |      | Yes        |      |        |      |         |
    81  | Mutex Duration | Yes       |      | Yes        |      |        |      |         |
    82  | Block Count    | Yes       |      |            |      |        |      |         |
    83  | Block Duration | Yes       |      |            |      |        |      |         |
    84  | Lock Count     |           | Yes  | Yes        |      |        |      |         |
    85  | Lock Duration  |           | Yes  | Yes        |      |        |      |         |
    86  | Exceptions     |           |      | Yes        |      |        |      |         |
    87  | Wall           |           |      | Yes        |      |        |      | Yes     |
    88  | Heap           |           |      | Yes (7.0+) |      |        |      | Yes     |
    89  
    90  ## Profile types supported with span profiles
    91  
    92  Pyroscope can integrate with distributed tracing systems supporting the OpenTelemetry standard. This integration lets you link traces with the profiling data and find resource usage for specific lines of code for your trace spans.
    93  
    94  Only CPU profile type is supported for span profiles.
    95  
    96  The following languages are supported:
    97  
    98  - [Go](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/trace-span-profiles/go-span-profiles/)
    99  - [Java](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/trace-span-profiles/java-span-profiles/)
   100  - [Ruby](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/trace-span-profiles/ruby-span-profiles/)
   101  - [.NET](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/trace-span-profiles/dotnet-span-profiles/)
   102  - [Python](https://grafana.com/docs/pyroscope/<PYROSCOPE_VERSION>/configure-client/trace-span-profiles/python-span-profiles/)