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.