ARM64 Support and Optimization

Hi QuestDB,

I am reading the aws deployment document, it mentions:

Architecture

QuestDB should be deployed on Intel/AMD architectures i.e. x86_64 and not on ARM i.e. aarch64. Some optimisations are not available on ARM, e.g. SIMD.

Is it still valid? AARCH64 is not optimised?

I notice that:

  • This sentence is not part of the github document source
  • ARM64 support is added since v6.0.0
  • Multiple blogs show QuestDB can run on Raspberry Pi and has great performance
  • However, I do not see QuestDB official AMI image support ARM64/AARCH64

Cheers,

Paul

ARM support is production-ready, and the database performs well, both on low-end and high-end ARM systems. It is true that we do not support explicit SIMD and JIT filters.

However, it depends on your workload as to whether you were heavily leaning on these features or not.

Once you start to factor in the lower price-point for ARM CPUs on cloud platforms, it becomes an attractive option.

For example, m8g instances are still cheaper than m6i instances, and for many workloads will have comparable, or higher performance. m6g instance performance is worse, but considerably cheaper.

It is worth using Java 17 over Java 11, when deploying on ARM.

How do I know I am using SIMD and JIT features in my application? If not too much, lower cost ARM Graviton like CPUs are attractive.

Another question is do you have preferred JDK distro? Do you support Java 21 LTS?

You can benchmark on both platforms and see what differences in performance (if any) you notice.

At a more granular level, you can tell from certain implementation details i.e. in the EXPLAIN plans, you see the JIT flag (or in logs).

In general, multi-threaded filtering and aggregation will benefit from SIMD/JIT more than index-heavy and projection-heavy workloads.

These features are also not particularly relevant when it comes to ingestion performance.

Re: JDK, we regression test against 11 and 17, though newer versions may be useable. If you encounter an incompatibility, let us know.

I personally default to Coretto 17 at the moment.

1 Like