Amazon CodeGuru Profiler
aws.amazon.com
What it is
Amazon CodeGuru Profiler collects runtime performance data from live applications and recommends ways to improve performance and find CPU bottlenecks. It is designed for continuous profiling of production applications with minimal overhead. Interactive flame graphs show CPU and latency analysis, including which code paths use the most resources. Machine learning recommendations identify expensive methods and explain their cause, impact, and possible resolution.
The service can detect anomalies in application profiles and, when configured, send an Amazon SNS notification for a new anomaly. It supports Java, JVM languages such as Scala and Kotlin, and Python 3.6 or later. Java and other JVM languages can be profiled for CPU and heap summary; Python profiling covers CPU wall-clock time. Applications may run on EC2, ECS, EKS, Fargate, Lambda, or on premises. The agent can be enabled in JVM applications from the command line or application code and is also used for Lambda applications. An AWS account is required, with IAM permissions controlling access. The agent collects stack traces, not parameter names or values, variable values, or application data.
Spec sheet
- Purpose
- Amazon CodeGuru Profiler collects runtime performance data from live applications and provides recommendations to improve performance and find CPU bottlenecks.Read 8 Oct 2026 · aws.amazon.com
- Compliance
- AWS says third-party auditors assess CodeGuru Profiler as part of multiple compliance programs, including SOC, PCI, FedRAMP, and HIPAA.Read 8 Oct 2026 · docs.aws.amazon.com
- Anomaly detection
- It detects anomalies in application profiles and can send an Amazon SNS notification when a new anomaly is detected if configured.Read 8 Oct 2026 · aws.amazon.com
- Data collected
- The agent collects stack traces but does not access function parameter names or values, variable values, or application data.Read 8 Oct 2026 · docs.aws.amazon.com
- Data retention
- The service retains five-minute profiles for 15 days, hourly profiles for 60 days, and daily profiles for three years.Read 8 Oct 2026 · docs.aws.amazon.com
- Encryption
- Data at rest and in transit are encrypted by default; traffic to the service and downstream dependencies uses TLS.Read 8 Oct 2026 · docs.aws.amazon.com
- Flame graphs
- It presents CPU and latency analysis in interactive flame graphs to show which code paths consume the most resources.Read 8 Oct 2026 · aws.amazon.com
- Integration
- The profiling agent can be enabled in JVM applications from the command line or application code and is also used to profile Lambda applications.Read 8 Oct 2026 · docs.aws.amazon.com
- Language capability limit
- The FAQ says Java and other JVM languages can be profiled for CPU and heap summary, while Python profiling covers CPU wall-clock time.Read 8 Oct 2026 · aws.amazon.com
- Production profiling
- The profiler is designed to run continuously on production applications with minimal overhead.Read 8 Oct 2026 · aws.amazon.com
- Recommendations
- Machine learning recommendations identify expensive or resource-intensive methods and explain the cause, impact, and possible resolution.Read 8 Oct 2026 · aws.amazon.com
- Runtime support
- The FAQ lists Java, Python, and JVM languages such as Scala and Kotlin, and says applications can run on EC2, ECS, EKS, Fargate, Lambda, or on premises.Read 8 Oct 2026 · aws.amazon.com
- Support and permissions
- Using the service requires an AWS account, and IAM permissions control who can create or access CodeGuru Profiler resources.Read 8 Oct 2026 · docs.aws.amazon.com
Plans and prices
Strong points and limits
Strong points
- Designed for continuous production profiling
- Flame graphs show CPU and latency paths
- Can alert through Amazon SNS for anomalies
- Encrypts data at rest and in transit
Limits
- Python profiling covers CPU wall-clock time
- Requires an AWS account
- Five-minute profiles are retained for 15 days
Who it suits
It suits teams running supported Java, JVM-language, or Python applications that want continuous profiling, performance recommendations, or anomaly alerts. Application access requires an AWS account and IAM permissions.
Amazon CodeGuru Profiler in depth
Read the full write-up
Amazon CodeGuru Profiler is a cloud service for collecting performance profiles from running applications and surfacing bottlenecks. It is best suited to teams operating supported Java, JVM-language, or Python workloads that need ongoing production visibility. Its combination of sampled flame graphs, recommendations, and long-lived profile history is useful, but language-specific limits and sampling-hour charges narrow its fit.
Overview
CodeGuru Profiler is designed to run continuously on production applications with minimal overhead. That makes it a practical choice for teams investigating behavior under real workloads, rather than relying solely on an isolated profiling session. It uses sampling, so teams that require another profiling mode should look elsewhere.
An AWS account is required, and IAM permissions govern who can create or access profiler resources. Profile data is encrypted at rest and in transit; traffic to the service and downstream dependencies uses TLS. The agent collects stack traces, not function parameter names or values, variable values, or application data. AWS says third-party auditors assess the service under compliance programs including SOC, PCI, FedRAMP, and HIPAA.
Key features
Interactive flame graphs present CPU and latency analysis by code path, giving developers a visual way to identify where resources are being consumed. Machine-learning recommendations point to expensive methods and explain their cause, impact, and possible resolution. That can help focus an investigation, while leaving developers to decide whether a suggested change is appropriate for their application.
Anomaly detection can identify changes in application profiles and, when configured, send an Amazon SNS notification. This is useful for teams that want profile changes surfaced without constantly watching graphs, but notifications depend on configuring SNS.
The agent can be enabled in JVM applications from the command line or application code, and is also used for Lambda profiling. Java and other JVM languages support CPU and heap summary profiling; Python profiling covers CPU wall-clock time. That difference matters: Python teams should not assume the same profiling coverage as JVM teams.
Profile history is retained at several resolutions: five-minute profiles for 15 days, hourly profiles for 60 days, and daily profiles for three years. The longer daily history can support comparisons over time, while fine-grained profiles expire sooner.
Pricing
The Amazon CodeGuru Profiler Free Tier costs nothing for 90 days; after that, standard sampling-hour pricing applies. For EC2, ECS, EKS, and AWS Fargate, the plan is priced at $0.01 a month, billed per sampling hour: the first 36,000 sampling hours per profiling group per month cost $0.005 per sampling hour, with no additional charge beyond 36,000 sampling hours per profiling group per month. For Lambda, the plan is $0.01 a month: the first 500 sampling hours per payer account are free, then sampling hours cost $0.005 up to 36,000 sampling hours per profiling group per month, with no additional charge beyond that threshold.
The free tier is a time-limited starting point, not a continuing free plan. The sampling-hour allowances and charges differ between Lambda and the other supported AWS compute services, so teams should estimate their usage by profiling group and payer account before adopting it broadly.
Platforms
The service is cloud-based and supports API, Linux, self-hosted, and web environments. Applications can run on EC2, ECS, EKS, Fargate, Lambda, or on premises. Supported languages are Java and JVM languages, plus Python 3.6 or later. Profiling uses sampling, with CPU, memory, and thread profiling supported; the language-specific CPU and heap coverage differs, particularly for Python.
Who it's for
CodeGuru Profiler fits teams already working with AWS that want continuous production profiling for supported runtimes, along with recommendations and optional anomaly alerts. It is also suitable for teams that value multi-year daily profile retention and IAM-controlled access. It is less suitable when the workload uses an unsupported language, when Python heap profiling is needed, or when a non-sampling method is required.
Pros and cons
Pros
Continuous production sampling is designed for minimal overhead, making ongoing observation more practical.
Flame graphs and recommendations connect resource-heavy code paths with explanations and possible resolutions.
Daily profiles remain available for three years, supporting longer-term review than the shorter five-minute and hourly retention windows.
Stack-trace collection excludes parameter values, variable values, and application data.
Cons
Sampling is the only profiling mode, limiting its usefulness for teams that need another approach.
Python profiling covers CPU wall-clock time, while Java and other JVM languages receive CPU and heap summary profiling.
The Free Tier lasts 90 days, after which sampling-hour pricing applies.
An AWS account and IAM permissions are required, tying access and administration to AWS.
Alternatives
Profiling Software and Continuous Profiling Tools provide broader category comparisons. Consider Grafana Cloud Application Observability if a freemium option and support for Linux, macOS, Windows, and web are more important; its Free plan includes 2,232 host hours, while its Pro plan charges $0.025 per host hour plus a $19 monthly platform fee.
Scalene is a free open-source Python profiler installed through pip or conda, making it an alternative for Python profiling without CodeGuru's paid sampling-hour model. Node.js --prof is a free option for generating V8 profiler output. For Java profiling, YourKit Java Profiler offers a single-seat annual subscription at $449,449 a year, including one installed copy and one year of support and upgrades.
YourKit.NET Profiler, Javadoc, Redgate SQL Provision, and JProfiler are other alternatives to consider.
Verdict
Choose CodeGuru Profiler if you run supported Java, JVM-language, or Python workloads and want ongoing production sampling, actionable recommendations, and long-term daily profile history within an AWS environment. Its strongest case is joining those capabilities with optional anomaly notifications; look elsewhere if you need broader Python profiling, a different profiling mode, or a continuing free option.
Verdict
CodeGuru Profiler combines production sampling, flame graphs, recommendations, and optional anomaly alerts for supported runtimes. Review the language-specific profiling coverage and retention periods against your needs.
Where Specifiction places it
- Profiling Software#2 of 298.6
- Continuous Profiling Tools#6 of 308.6