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/)