AWS EC2 Instance Comparison: R6g vs R6a vs R6i

AWS EC2 R6 instances are memory optimized instances that are built to deliver fast performance for workloads that process large data sets in memory.
In this article, we will compare the R6g, R6a, and R6i instance types within the R6 instance family and look at how each of them performs.
Comparing the R6g, R6a and R6q instance families
The R6g, R6a, and R6i instance families are memory optimized instances. They are suitable for workloads that require high memory bandwidth and low latency.
The key difference between the three instance families is that the R6g instances are powered by Arm-based AWS Graviton 2 processors whereas R6a instances are based on the AMD EPYC 7002 processors and R6i instances are based on the Intel Xeon Platinum 8000 processors.
Performance
We compared the performance between these instance families by running a bunch of tests on the following instances:
- r6g.xlarge
- r6a.xlarge
- r6i.xlarge
Instance Type | vCPUs | Memory (GB) |
---|---|---|
r6g.xlarge | 4 | 32 |
r6a.xlarge | 4 | 32 |
r6i.xlarge | 4 | 32 |
We will be using Sysbench to run various tests to measure the CPU, and Memory performance.
CPU
We ran the CPU benchmark using the following command: sysbench cpu --cpu-max-prime=20000 --threads=8 run
.
We will be comparing the total time
as well as the total number of events
for the benchmark from start to end.
As we can see from the results below, r6g.xlarge
performed much better as compared to r6a.xlarge
and r6i.xlarge
.
r6g.xlarge
CPU speed:
events per second: 4361.34
General statistics:
total time: 10.0016s
total number of events: 43626
Latency (ms):
min: 0.91
avg: 1.83
max: 20.92
95th percentile: 12.98
sum: 79929.89
r6a.xlarge
CPU speed:
events per second: 3535.12
General statistics:
total time: 10.0015s
total number of events: 35359
Latency (ms):
min: 1.02
avg: 2.26
max: 37.13
95th percentile: 13.22
sum: 79944.81
r6i.xlarge
CPU speed:
events per second: 2404.39
General statistics:
total time: 10.0015s
total number of events: 24051
Latency (ms):
min: 1.30
avg: 3.32
max: 29.62
95th percentile: 13.70
sum: 79927.15
Memory
We ran the Memory benchmark using the following command: sysbench memory --memory-block-size=1M --memory-total-size=100G --num-threads=8 run
.
We will be comparing the total time taken to perform the operations.
In this benchmark, r6g.xlarge
and r6a.xlarge
performed similarly whereas r6i.xlarge
performed much worse than the other two.
r6g.xlarge
General statistics:
total time: 2.0175s
total number of events: 102400
Latency (ms):
min: 0.08
avg: 0.16
max: 20.08
95th percentile: 0.08
sum: 15965.61
r6a.xlarge
General statistics:
total time: 2.0120s
total number of events: 102400
Latency (ms):
min: 0.04
avg: 0.15
max: 44.07
95th percentile: 0.12
sum: 15656.46
r6i.xlarge
Total operations: 102400 (30871.19 per second)
102400.00 MiB transferred (30871.19 MiB/sec)
General statistics:
total time: 3.3156s
total number of events: 102400
Latency (ms):
min: 0.04
avg: 0.25
max: 28.14
95th percentile: 0.18
sum: 25998.35
Pricing
We compared the prices between these instance families by looking at the price per hour for each instance type.
R6g instances are much cheaper than R6a and R6i instances. Price/core for Linux on-demand instances:
Instance Type | Price / hour (linux) |
---|---|
r6g.xlarge | 0.2016 |
r6a.xlarge | 0.2268 |
r6i.xlarge | 0.252 |
Conclusion
The R6g instances provide much better performance at a lower cost than the R6a and R6i instances. If you are looking for a memory optimized instance and your workload can be run on the ARM architecture, you should consider using the R6g instances.
Otherwise, the R6a instances are a good alternative. They seem to perform better than the the R6i instances and are cheaper than the R6i instances.