Skip to content

Performance

What your S3 client sees on a deployment like the one you would get: every request over TLS, authenticated, metered, encrypted at rest and written to the record. Nothing is turned off to measure it. our statement

Setup. A dedicated deployment in GCP us-west1 (4 vCPU, 16 GB) · client: a VM in the same region, a stock AWS SDK and curl · files kept on the deployment (placement LOCAL) · release r95 · 2026-10-30 · three back-to-back runs; each figure is the median run’s.

4 KiB 64 KiB 1 MiB 16 MiB
Store (PUT, p50 / p99 ms) 10 / 29 11 / 27 21 / 42 134 / 157
Read (GET, first byte p50 · whole p99 ms) 6 · 10 6 · 14 7 · 21 17 · 89
Check it exists (HEAD, p50 / p99 ms) 6 / 8

A PUT returns once the file is stored on the deployment. Sealing to Walrus follows, on the file’s placement.

Throughput (median)
Multipart upload, 256 MiB (16 MiB parts, 4 at a time) 101 MiB/s
Multipart upload, 1 GiB 102 MiB/s
Store a 16 MiB file, one PUT 119 MiB/s
Read a 16 MiB file, one stream 236 MB/s
Range read, 1 MiB from a 1 GiB file first byte 17 ms · whole p99 30 ms
Clients Read p50 / p99 ms Store p50 / p99 ms
1 6 / 12 12 / 33
8 12 / 35 43 / 129

Each deployment admits requests up to a rate set for it; above that, a request is answered 429 and should be retried.

Every figure comes from ordinary S3 calls. On a trial deployment, time the same calls with your own client: PUT and GET at the sizes above, and a multipart upload with 16 MiB parts.

Permafrost runs on Sui testnet and Walrus testnet. Everything here describes a shipped testnet instance, not a production service.