EBS - General Purpose SSD
Ref: https://learn.cantrill.io/courses/1820301/lectures/41301321
- 🔧 Balance of price and performance
- Flexible type of storage → good for general usage
- 💡 Was game breaker when introduced → high-performing storage for a fairly low price
- Size range: 1GB-16TB
- ‼️ Performance standardization: 1 IO = 1 (IO) credit = 16kB ! (for all SSD volumes)
- This is how AWS defines and measures IOPS for billing and performance in EBS SSD volumes
- 1 IOPS = 1 IO in 1 sec = 1 credit/s = 16kB/s
- Two types:
- GP2 (default)
- GP3 (new, generally cheaper, probably will become default)
- Recommended for most workloads:
- Boot volumes
- Low-latency interactive apps
- Dev & Test environments
- GP3 also good for:
- Virtual desktops
- Medium sized single instance DBs (e.g. MSSQL Server, Oracle DB…)
- 💡 Sadly, you have to commit the size and min-max performance numbers for GP2 and GP3 volumes to memory in order to exam a few exam questions 😞. They help you discern between correct and incorrect options.
EBS GP2 Volumes
- Default general purpose SSD storage provided by EBS
- Performance
- Baseline performance rate
- 🔧 Determines the minimum (baseline) IOPS that can be performed on disk
- Depends on disk size
- 1 GB ≤ Size ≤ 33.33GB → Baseline = 100 IOPS (GP2 minimum baseline)
- 33.33 GB ≤ Size ≤ 5.33TB → Baseline = 3 IOPS per GB
- e.g. Baseline[100GB] = 3x100 = 300 IOPS
- 5.33 TB ≤ Size ≤ 16TB → Baseline = 16 000 IOPS (GP2 maximum baseline)
- GP2 maximum throughput = 16kB (one IO credit) * 16 000 IOPS ≈ 250 MB/s
- Burst performance rate = 3000 IOPS
- Only relevant for volumes < 1TB → Determines the maximum IOPS that can be performed on disk
- Volumes > 1TB have a baseline of more than 3000 IOPS → burst rate irrelevant

- Volumes < 1TB follow an IO credit allocation model
- Conceptually: credit bucket
- Credits spent in disk operations
- Bucket capacity = 5.4 million credits (starts full)
- Bucket fills at baseline performance rate of volume
- Performance scenarios:
- Actual Rate < Baseline Rate → Bucket refills
- Actual Rate = Baseline Rate → Bucket quantity stays the same
- ❗ Still fine even if bucket is empty! (since bucket is being refilled at same rate)
- Baseline Rate < Actual Rate ≤ Burst Rate → Bucket is depleted
- ‼️ If bucket is empty → Cost penalties!!! (avoid!)
- Credit bucket starts up full with 5.4 million credits
- Allows 30 mins at 3000 IOPS (burst rate) assuming no refilling
- 👍 Great for booting and initial workloads
- Could burst much longer than 30 mins because bucket is always refilling
- 💡 Key requirement: manage all credit buckets of all of your volumes (ensure they stay replenished and that you're not penalized)
- ❗ Volumes ≥ 1TB don't use the credit model
- Baseline rate exceeds burst rate → Volumes always perform with baseline rate
EBS GP3 Volumes
- Newer type of storage, will probably become the default over GP2 at some point
- More performant, and generally cheaper than GP2 volumes!
