Skip to main content
Each benchmark on this page mounts every file system on the same EC2 host, so the compute and the network are the same and only the file system differs. Run the same commands from your own host to check our numbers.

Archil vs Amazon EFS

The results are in Benchmark against Amazon EFS and on archil.com/compare/amazon-efs.

Method

  • Host: AWS c7gn.2xlarge (Graviton3, 8 vCPU, 15 GiB), us-east-1, Amazon Linux 2023. Both file systems were in the same region and tested from the same host on 2026-10-15.
  • Archil: a new Archil disk with no data source, mounted with Archil client v0.9.2 and default mount options.
  • Amazon EFS: a new file system with General Purpose performance mode, Elastic throughput and Standard storage, mounted with amazon-efs-utils 3.0.1 (TLS, NFSv4.1, rsize/wsize 1 MiB). Amazon S3 Files is built on the same service.
  • No network fetches: git clones came from local bare mirrors, and npm used npm ci --prefer-offline with a prefilled cache. Only the file system under test was measured.
  • Timing: times are wall-clock time until the command returns.
  • fio: fio 3.32, buffered I/O, 4 GiB file. 4 KiB random I/O used libaio, iodepth 16, 4 jobs. Cold reads were taken after unmount, drop_caches and remount.
  • Tool versions: git 2.50.1, Node 24.18.0 / npm 11.16.0, SQLite 3.40.0.

Run it

Mount both file systems, then run every test below 3 times on each mount and take the median. Set MNT to the mount under test. Inputs and caches stay on local disk.
Between steps, except between a clone and its git status, we flushed the mount (archil sync /mnt/archil on Archil, sync -f on EFS). The flush isn’t part of the times in the table. git. Mirror both repositories once, pinned to the commits we used:
Then, for each repository (old tag 3.21.2 for express, v16.0.0 for react):
npm. Create the project and fill the cache once:
Our lockfile resolved 598 packages. Yours resolves the newest matching versions on the day you create it, so expect the count to differ a little. Then:
SQLite. python3 sqlite_bench.py "$MNT/sqlite" prints the time in seconds for each of the four tests. The script has three parts, full, normal, and bulk; bulk runs the 1M-row insert and then the point reads against that table in the same process, with no flush between them. On EFS we ran each part on its own with a 10-minute limit, for example timeout 600 python3 sqlite_bench.py "$MNT/sqlite" bulk, and the point reads hit that limit.
sqlite_bench.py
fio. The four jobs in the table, in the order they ran, all on the same 4 GiB file. The MB/s and IOPS are fio’s bw_bytes and iops. Warm reads also ran after the sequential write; they aren’t in the table.

Archil vs JuiceFS vs Amazon S3 Files

The developer-workload numbers on archil.com/compare/juicefs and archil.com/compare/amazon-s3-files come from one AWS c7gn.2xlarge (arm64) in us-east-1 with every file system mounted on the same host:
JuiceFS Community Edition kept data in Amazon S3 and metadata in ElastiCache for Redis in the same Availability Zone. Inputs sit on local disk, so GitHub and the npm registry aren’t timed, and each run is timed until its writes are durable. Run each workload three times per file system, delete its output between runs, and take the median:
On Archil, replace sync -f <dir> with archil sync /mnt/archil. With --writeback, JuiceFS acknowledges writes once they are staged on local disk, so also wait until every staged block has uploaded:
Our app installed 18,602 files. The count depends on the Next.js release create-next-app@15 resolves, so expect yours to differ a little.

Archil vs Amazon S3 Files vs Mountpoint for Amazon S3

The latency, visibility, and new-file-system numbers on archil.com/compare/amazon-s3-files and archil.com/compare/mountpoint-for-amazon-s3 come from one AWS c7gn.2xlarge (arm64) in us-east-1. Each file system had two independent mounts on that host, a writer A and a reader B, each with its own cache:
A default Archil mount is exclusive, so B used --shared. The S3 Files mount target was in the host’s Availability Zone, on a versioned bucket. Mountpoint ran without --cache. AWS API calls for the new-file-system test ran from a separate machine, which adds about 0.1 to 0.5 s per call. Archil’s API call and every mount and write ran on the host. The measurement script will follow.