Advisory: Write Performance Issues with Neo4j on ARM with NVMe Disks (September 20, 2023)Jan 3, 2025Knowledge
Article DetailsDetailsHelp DetailsNeo4j recommends EBS for convenience and performance in the cloud with ARM processors. However some customers may want to use NVMe for greater throughput. Testing on Graviton2 and Graviton3 with NVMe disks with Neo4j 4.4 and Neo4j 5.x has identified two performance bugs in the OpenJDK v17 that have a substantial impact on write performance (details below). These bugs are due to be fixed in OpenJDK v21 and back ported to OpenJDK v17 and the Corretto JDK. Until the bugs have been fixed in the JDK, Neo4j does not recommend deploying on NVMe disks with Graviton3 or Graviton2. Behaviour observed, as the batch size of writes increases, write throughput on ARM degrades to the point that write throughput is 90% of an equivalent Intel instance. Flame graphs (below) revealed that substantial time was spent in LockSupport.unpark used by the batching transaction appender responsible for writing to the transaction log. OpenJDK bugs which impact write performance and are still open at the time of this advisory. JDK-8305670 JDK-8305994 In summary, the bugs are performance regression in LockSupport.unpark which can cause up to a 2.3x slow down and the Guarantee eventual async monitor deflation affects garbage collection in the JVM. Until these bugs have been fixed in Java 17 and Java 11, required by Neo4j 5.x and Neo4j 4.4 respectively. Neo4j strongly recommends that customers deploy on the EBS disks which aren't prone to these JVM bugs.InformationTitleAdvisory: Write Performance Issues with Neo4j on ARM with NVMe Disks (September 20, 2023)Article Created Date3/15/2024, 10:54 PMURL Name20895035630867-Advisory-Write-Performance-Issues-with-Neo4j-on-ARM-with-NVMe-Disks-September-20-2023Last Modified Date1/3/2025, 6:13 AM