Oracle publicly announced the availability of the A1 compute instance in their cloud offer with the introduction of the Ampere Altra ARM v8.2 cpu. ARM cpus aren’t new and we all (probably) have them without knowing (mobile devices are often powered by ARM cpus, or also the Raspberry Pi boards for example).
Should you care about ARM compute instances?
I’m not going to go into technical details of what is an ARM processor and how it is different compared to classical x86 cpus, if you want to know the technical specification of Ampere Altra you can easily find a lot of content online.
The question is more if you can benefit somehow from this new platform.
While it does run on your mobile devices, you probably never thought about installing any server application on it, and therefore a match between ARM and server needs doesn’t sound like a natural match.
4 OCPU and 24Gb of memory for FREE
The Always Free Oracle Cloud offer has been extended adding a lot more computing power. The original compute instance resources available were 2 instances based on the “VM.Standard.E2.1.Micro” shape using 1/8th OCPU (with the ability to use additional CPU resources, probably based on availability) and 1Gb memory each. These E2 shapes use AMD EPYC 7551 processors.
Now you have, in addition to the existing resources, 4 A1 OCPU and 24Gb of memory to split between 1 and 4 compute instances. It is based on the “flex” shapes: you decide the amount of cpu and memory for each shape. You can “go all-in” and set up a single instance with 4 OCPU and 24Gb of memory, or split it into 4 instances with 1 OCPU each, or any other combination.
This is a lot more resources than the original offer!
The interesting thing when you look at the A1 compute shapes is that you create an instance in the same way as you would do on any other x86 processor. You define a shape size, just like with the E4 Flex and E3 Flex shapes based on AMD, you select the OS and by default are offered Oracle Linux 7.9 or 8, you select the network configuration, set an SSH public key for the authentication and you are ready to go.
A1 compute instances looks just like any other Oracle Cloud compute instance based on x86 cpus.
Does it mean you can run everything on it? Not yet, but close…
Oracle Graph on ARM cpu
As a test, I did take the Oracle Graph use case and wanted to see if it was possible to run Oracle Graph Server and the client on this new platform. It is written in Java, therefore it should work without problems.
Because the base is “just” an Oracle Linux 7.9, the whole install process isn’t very different than what you would do on x86 hardware.
It needs the Java JDK and while the Oracle Java SE Development Kit exists for ARM, the easiest was to use GraalVM JDK because Oracle observed some interesting performance benefits when running GraalVM on ARM.
In the Oracle Linux cloud compute instances there are various YUM repositories configured by default, therefore installing GraalVM was as simple as one command:
sudo yum install -y graalvm21-ee-11-jdk
This is the enterprise version of GraalVM, there is a community version available on their GitHub.
For the Oracle Graph Server installation, it doesn’t come from YUM but it’s a good old RPM you download from the Oracle website and load on the compute instance. The installation is as described in the documentation except for a required extra flag:
sudo rpm -i --ignorearch oracle-graph-21.2.0.x86_64.rpm
Why does it require “–ignorearch” ? Because the RPM is for an x86_64 platform, while the A1 instance is based on ARM. Therefore you must tell RPM to ignore the architecture check because “you know what you are doing”.
From here it is exactly like on any other x86 platform. Oracle Graph Server works, the interactive Graph client via Jshell works, the PyPGX Python client works. You can also install a Jupyter notebook to use the PyPGX and do your graph analysis comfortably in notebooks. It does work!
How does the A1 platform perform compared to x86 cpus?
I was curious to see how the performance was compared to more “traditional” hardware, and mainly to see if the Oracle Free Tier offer of 4 OCPU and 24Gb of memory allowed for real use of Oracle Graph.
Trust me: it does work and it does work well.
Not a “professional” benchmark
I did compare the execution time of few tasks which, in my mind, are based on CPU work in Oracle Graph. From a memory point of view all the instances had at least 16Gb of RAM and never used more than 50% of it. I did use a fairly small graph with 190’708 nodes and 315’564 edges and repeated every task 25 times each.
While not being a formal benchmark, the global feeling is that 1 A1 OCPU = 1 thread for E4 OCPU. This ARM processor is single thread, while every other x86 shape has 2 threads per OCPU.
For comparison I did compare A1 with the E2, E3 and E4 compute instance.
E instances are AMD powered
E2, E3, and E4 instances are based on AMD processors. There are still Intel-based instances, but they are more expensive per OCPU/hour and therefore I generally don’t use them.
The details of the CPU used are the following:
E2: AMD EPYC 7551, 32 cores per socket @ 2.00 GHz Base, and @3.0G Turbo
E3: AMD EPYC 7742, 64 cores per socket @ 2.25 GHz Base, and @3.4G Turbo
E4: AMD EPYC 7J13, 64 cores per socket @ 2.55 GHz Base, and @3.5G Turbo
The theory of 2 A1 OCPU = 1 E4 OCPU (because E4 has 2 threads per core) was valid for most of the tested tasks except for a PGQL query looking for the shortest path between nodes (the query was returning the 17 paths being the longest among the shortest paths). In this case, the ARM cpu was less performant than x86 cpus, and even adding more cpus didn’t help.
I do have some theories to explain this observed behavior, but I didn’t look further in finding an official reasons for this result because it anyway works and that kind of query is the worse I could imagine running on my graph.
So, should you care about ARM compute instances for Oracle Graph?
Yes! Mainly thinking at the Always Free offer with its 4 OCPU and 24Gb of memory, you can run the Graph Server and it will have enough resources for your analysis work. And it is free! Also, the 24Gb of memory help as Oracle Graph Server load graphs in memory, therefore having all that memory available allows using medium graphs (millions of nodes and edges) without problems.
If you don’t use the Always Free offer but pay for your resources, the cost of A1 OCPU/hour is 0.01$ compared to the 0.025$ for the E4 OCPU (memory has the same price). Knowing that 2 A1 OCPU are globally similar in performance with 1 E4 OCPU, it still gives you an economy of 0.005$/h by using the ARM platform.
More in general consider the A1 instances for any other workload that could work (no, the Oracle Database isn’t available on ARM at the time of writing).