Welcome to the forum!
I’m wondering: is there so much data that needs to be read by restic on each invocation? Does so much data change between runs? Maybe restic is run in a way so that it re-reads all data for each invocation, that’d explain the CPU load. Usually, I’d expect that subsequent (“incremental”) backups only read the data that has changed.
You can find out if restic works right by looking for the line using parent snapshot [...]
when running a subsequent backup (explanation here).
In order to dig into this further:
- Can you maybe paste the whole invocation (including the paths you save)?
- Is the set of paths you save stable? Or do the paths change on each invocation?
- Is the hostname always the same? (check by running
restic snapshots
)
On Linux there’s ionice
which can throttle the IO bandwidth used by restic, but that’ll only change the priority of the IO relative to other processes. Other than that you could try to set the environment variable GOMAXPROCS=1
, which should restrict restic to roughly one CPU core at most.