The engine uploads 141 MB/s reading one file per core; 4 accounts together used 2.4 GB of memory
Date:Oct 15, 2026Server:cPanel test server (18 cores, 23 GB) and ZFS storage on the internal networkReading time:2 minTopic:Performance
The question
A hosting server has no memory to spare: if the backup takes too much, the sites suffer, or the backup itself dies halfway.
How much does the backup engine itself upload to the storage, and how much does it gain by reading several files in parallel? And how much memory does the first backup of 4 accounts use when they run at the same time?
Result
141 MB/swith 18 parallel reads, the default (one per core), versus 60 MB/s reading one file at a time
2.4 GBof combined peak memory, with 4 accounts on their first backup at once (about 600 MB per account); they finished in 29 s
Why it matters to whoever runs the server
Speed: reading one file per core, the engine uploads 141 MB/s, versus 60 MB/s reading one at a time. Less backup time is less time sharing the server with the sites.
Memory: 4 accounts together on the first backup used 2.4 GB at peak, about 600 MB per account. That’s why, on an 11 GB server without swap, the default starts with 2 accounts at a time: the admin knows ahead of time what the backup will take.
Engine upload by files read in parallel4 GB of random data, uncompressed, one SFTP connection · higher is better
One file at a time
60 MB/s
4 in parallel
117 MB/s
18 in parallel (default)
141 MB/s
Source: Salvo Lab · cPanel test server and ZFS storage · Oct 15, 2026
See the data as a table
Files read in parallel
Time
Speed
1
68 s
60 MB/s
4
35 s
117 MB/s
18 (default: 1 per core)
29 s
141 MB/s
Method
A cPanel test server (18 cores, 23 GB of memory) uploading to a ZFS backup storage on the internal network, over SFTP. The engine uses one SSH connection and sends several requests inside it. Low priority.
Upload: 4 GB of random data, uncompressed, with the source already in system memory.
Memory: 4 real accounts of 1 to 2.5 GB (17 to 44 thousand files each, 6.8 GB in total), first backup, zstd-fastest, one repository per account, all 4 at once. The largest took 25 s; server load reached 16, with 18 cores.
What we decided
The engine’s default, one read per core, is the fastest: it stays. On a production server with 11 GB of memory and no swap, the first backup starts with 2 accounts in parallel (about 1.2 GB), and only goes up after measuring there.
?
What we don’t know yetThe engine uses a single connection, and its 141 MB/s stayed below the 245 MB/s one SSH connection with the same cipher reached with system tools (Lab 06): we don’t know yet whether the limit is the SFTP library or the write to the storage. The source data was already in system memory; with a cold disk, the engine will likely be slower. And the first backup is the worst case for memory; incrementals used about 170 MB per account (Lab 01).
Want to see Salvo on your server?Join the beta waitlist. We’ll let you know when there’s a spot.