I think there is something similar going on my repo:
# restic prune --dry-run
repository 559ce728 opened (version 2, compression level auto)
loading indexes…
[0:10] 100.00% 62 / 62 index files loaded
loading all snapshots…
finding data that is still in use for 247 snapshots
[1:59] 100.00% 247 / 247 snapshots
searching used packs…
collecting packs for deletion and repacking
[0:03] 100.00% 200895 / 200895 packs processed
Would have made the following changes:
to repack: 513134 blobs / 8.339 GiB
this removes: 118942 blobs / 7.705 GiB
to delete: 0 blobs / 0 B
total prune: 118942 blobs / 7.705 GiB
remaining: 4768630 blobs / 3.226 TiB
unused size after prune: 913.420 GiB (27.65% of remaining size)
# restic prune --dry-run --max-unused 500G
repository 559ce728 opened (version 2, compression level auto)
loading indexes…
[0:11] 100.00% 62 / 62 index files loaded
loading all snapshots…
finding data that is still in use for 247 snapshots
[1:34] 100.00% 247 / 247 snapshots
searching used packs…
collecting packs for deletion and repacking
[0:01] 100.00% 200895 / 200895 packs processed
Would have made the following changes:
to repack: 507510 blobs / 1.295 GiB
this removes: 113635 blobs / 675.790 MiB
to delete: 0 blobs / 0 B
total prune: 113635 blobs / 675.790 MiB
remaining: 4773937 blobs / 3.232 TiB
unused size after prune: 920.465 GiB (27.81% of remaining size)
# restic prune --dry-run --max-unused 0G
repository 559ce728 opened (version 2, compression level auto)
loading indexes…
[0:10] 100.00% 62 / 62 index files loaded
loading all snapshots…
finding data that is still in use for 247 snapshots
[0:56] 100.00% 247 / 247 snapshots
searching used packs…
collecting packs for deletion and repacking
[0:00] 100.00% 200895 / 200895 packs processed
Would have made the following changes:
to repack: 2608254 blobs / 1.182 TiB
this removes: 1335976 blobs / 921.125 GiB
to delete: 0 blobs / 0 B
total prune: 1335976 blobs / 921.125 GiB
remaining: 3551596 blobs / 2.334 TiB
unused size after prune: 0 B (0.00% of remaining size)
I never had issues with pruning. I generally prune with --max-repack-size 100G and the --max-unused unspecified (so the default 5%) and it generally works, so I suspect there is something wrong with the pruning plan, triggered by something in the repository, perhaps how the data was deleted in the past forget/prune cycles.
The workaround I think is simply run a prune --max-unused 0G --max-repack-size 100G or whatever value you can handle in a single run.