Language and Library Versions for Profiler Features
The following tables summarize the features available for each language runtime.
- Minimum versions are required to access at least one feature. If you have an earlier version, profiling is not available.
- Feature-complete versions give you access to all supported features. It’s usually best if you update to the latest version of all tracing libraries.
For more details, click the language heading in any table to go that language's setup page.
Runtime and tracing library versions
To use the Datadog Profiler, use at least the minimum versions summarized in the following table. For specific profile type availability by version, see Profile types.
Profile types
To collect profile types, use at least the minimum versions summarized in the following table. If a runtime isn’t specified, the profile type requires the minimum runtime version in Runtime and tracing library versions.
| Java | Python | Go | Ruby | Node.js | .NET | PHP | Rust/C/C++ |
---|
CPU
The time each function/method spent running on the CPU. | JDK 8+ | tracer 0.35+ | tracer 1.23+ | tracer 0.48+ | tracer 5.11.0, 4.35.0, 3.56.0 | tracer 2.15+ | tracer 0.71+ | Preview ddprof 0.1+ |
Exceptions
The number of exceptions raised, including those caught. | JDK 8+ | Python 3.7+ | | | | .NET 5+ tracer 2.31+ | tracer 0.96+ | |
Allocation
Number and sizes of memory allocations made by each function/method, including allocations which were subsequently freed. | JDK 11+ | Python 3.6+ tracer 0.50+ | tracer 1.47+ | tracer 2.3.0+ | | Preview .NET 6+ and .NET Framework beta (requires Datadog Agent 7.51+ and tracer 3.2+) tracer 2.18+ | tracer 0.88+ | Preview ddprof 0.9.3 |
Heap
The amount of heap memory allocated that remains in use. | JDK 11+ tracer 1.39.0+ | Python 3.6+ tracer 0.50+ | tracer 1.23+ | alpha Ruby 3.1+ tracer 2.3.0+ | tracer 0.23+ | beta .NET 7+ tracer 2.22+ | | Preview ddprof 0.15+ |
Wall time
The elapsed time spent in each function/method. Elapsed time includes time when code is running on CPU, waiting for I/O, and anything else that happens while the function/method is running. | JDK 8+ | tracer 0.35+ | | tracer 0.48+ | tracer 0.23+ | tracer 2.7+ | tracer 0.71+ | |
Locks
The time each function/method spent waiting for and holding locks, and the number of times each function acquired a lock. | JDK 8+ | tracer 0.45+ | tracer 1.47+ | | | .NET 5+ and .NET Framework beta (requires Datadog Agent 7.51+) tracer 2.49+ | | |
I/O
The time each method spent reading from and writing to files and sockets. | JDK 8+ | | | | | | | |
Other features
To access additional profiling features, use at least the minimum versions summarized in the following table. If a runtime isn’t specified, the profile type requires the minimum runtime version in Runtime and tracing library versions.
| Java | Python | Go | Ruby | Node.js | .NET | PHP | Rust/C/C++ |
---|
Trace to Profiling integration
Find specific lines of code related to performance issues. Learn more | JDK 8+ | tracer 2.12.0, 2.11.4, 2.10.7 | tracer 1.51.0 | tracer 1.21.1 | tracer 5.11.0, 4.35.0, 3.56.0 | tracer 2.30.0 | tracer 2.30.0 | |
Endpoint Profiling
Identify endpoints that are bottlenecks or responsible for heavy resource consumption. Learn more | JDK 8+ | tracer 0.54.0 | tracer 1.37.0 | tracer 0.52.0 | tracer 5.0.0, 4.24.0, 3.45.0 | tracer 2.15.0 | tracer 0.79.0 | |
Timeline View
Surface time-based patterns and work distribution over the period of a span. Learn more | JDK 8+ | tracer 2.12.0, 2.11.4, 2.10.7 | tracer 1.51.0 | tracer 1.21.1 (2.4.0 for GVL profiling) | tracer 5.11.0, 4.35.0, 3.56.0 | tracer 2.30.0 | tracer 0.89.0 | |
Further reading
Additional helpful documentation, links, and articles: