23種類のAWS EC2インスタンスタイプにおけるPostgreSQLのパフォーマンスとコスト分析
PostgreSQL Performance and Cost Analysis Across 23 AWS EC2 Instance Types
Executive Summary
1 GBのデータセットで毎秒33,000リクエスト(RPS)を必要とするワークロードの場合、m8g.largeインスタンスとgp3-baselineストレージの組み合わせが最もコスト効率の高い構成であり、月額約**$82**となります。c8i.largeは、コストあたりの生のスループットが最も高いものの、Gravitonベースのインスタンス(arm64)は、PostgreSQLのデプロイメントにおいて、一般的にパフォーマンスとコストの優れたバランスを提供します。
Cost-Performance Frontier for 33,000 RPS
1 GBのデータセットで33,000 RPSのスループットを目標とする場合、テストされた52の構成のうち30が要件を満たしています。最適なインスタンスの選択は、絶対的な最小コストを優先するか、あるいは最大の効率性を優先するかによって異なります。
Cheapest Configuration
- Instance: m8g.large
- Storage: gp3-baseline
- Architecture: arm64 (Graviton)
- Cost: ~$82/mo
- Performance: 45,515 RPS (1.4× target)
Best RPS per Dollar
- Instance: c8i.large
- Storage: gp3-baseline
- Architecture: x86-64
- Performance: 52,203 RPS
- Efficiency: 451,476 RPS/€·hr
Comparative Analysis of Instance Families
パフォーマンスはEC2ファミリー間で大きく異なり、新しい世代やGravitonプロセッサは、スループットとレイテンシにおいて明確な利点を示しています。
Graviton (arm64) vs. x86-64
Gravitonインスタンス(ソースデータで緑色にハイライトされているもの)は、コストパフォーマンスの境界線上に頻繁に現れます。例えば、m8g.large (arm64) は、gp3-baselineストレージを使用した場合、コスト($82/mo 対 $90/mo)とスループット(45,515 RPS 対 41,305 RPS)の両方において、m7i.large (x86-64) を上回っています。
Performance Scaling by Instance Size
インスタンスサイズを大きくすると、一般的にスループットは向上しますが、インスタンスが大きくなるにつれて、コストあたりのRPSは低下することがよくあります。
- m8g.large: 45,515 RPS (~$82/mo)
- m8g.xlarge: 70,871 RPS (~$147/mo)
- m8g.2xlarge: 81,451 RPS (~$278/mo)
Impact of Storage Configuration: gp3-baseline vs. gp3-max
ストレージ構成は、スループットの比例的な増加を伴わずに、月額コストに大きな影響を与えます。
c8i.largeを例に挙げると:
- gp3-baseline: 52,203 RPS at ~$84/mo
- gp3-max: 53,444 RPS at ~$184/mo
このシナリオでは、gp3-maxへのアップグレードにより月額コストが100%以上増加した一方で、1秒あたりのリクエスト数はわずかな増加にとどまりました。これは、この特定のワークロードにおいて、ベースラインのgp3ストレージで十分であることを示唆しています。
Low-End Performance (T-Series Instances)
Tシリーズインスタンス(t3, t4g)は、高スループットのPostgreSQLワークロードには適していません。これらのインスタンスは、一貫して33,000 RPSの目標を達成できず、ほとんどが2,800から5,300 RPSの間でした。例えば、t4g.smallはgp3-baseline上でわずか2,842 RPSしか達成できず、m8g.largeよりも1桁低い速度でした。