4.3.2 Profile Application Performance
Amazon CodeGuru Profiler
What it does:
- Profile application performance
- Provide different visualizations of profiling data
- Identify what code is running
- Show how much time is consumed
- Recommend performance improvements
Features:
- Continuous profiling for Java, Python
- Identifies expensive code paths
- Recommendations for optimization
- Integration with Lambda and EC2
- Flame graphs, heat maps
Use cases:
- Find CPU-intensive code
- Identify memory leaks
- Optimize resource usage
- Reduce latency
Lambda Power Tuning
How to determine minimum memory and compute power:
Manually run tests, OR
Use AWS Lambda Power Tuning tool to automate process and graph results
Open-source tool by Alex Casalboni
Tests function with different memory settings
Outputs optimal memory/cost/duration balance
Step Functions-based workflow
128MB → Duration: 2000ms, Cost: $0.000004
256MB → Duration: 1000ms, Cost: $0.000004
512MB → Duration: 500ms, Cost: $0.000004 ← optimal
1024MB → Duration: 480ms, Cost: $0.000008
AWS Compute Optimizer
What it does:
- Identify optimal resource configurations
- EC2 instance types
- EBS volume configurations
- Lambda function memory sizes
How it works:
- Analyzes historical utilization metrics
- Machine learning recommendations
- Cost and performance trade-offs
Lambda REPORT Line
REPORT RequestId: xxx
Duration: 250.00 ms
Billed Duration: 300 ms
Memory Size: 256 MB
Max Memory Used: 240 MB ← Close! Increase memory
Init Duration: 500.00 ms ← Cold start
- Trace latency per service
- Identify slow subsegments
- Compare traces over time
- Service Map shows bottlenecks
Exam Tip:
- CodeGuru Profiler = profile application, visualize data, performance improvements
- Lambda Power Tuning = automate finding optimal memory
- Compute Optimizer = optimal EC2/EBS/Lambda configurations
- REPORT line = quick performance check
- X-Ray = distributed performance analysis