[pbs-devel] parallelize restore.rs fn restore_image: problems in
Niko Fellner
n.fellner at logics.de
Wed Dec 9 03:07:11 CET 2020
I did some benchmarks now at an Azure L32s_v2 (32 vCPUs, 256 GB memory, 4x 2 TB NVMe; on tests with ZFS I reduced the zfs-arc-max to 8 GiB, because I didn't want to test the memory only)
Overall the speedup of the parallel pbs-restore I encountered was at least 2.1x here, often about 2.6x, but in some tests even up to 6.8x; On big VMs a speedup of 3.6x.
The CPU usage of the most busy pbs-restore process during the 750 GiB restore was often about 300-450% (not great for 32 threads, but we only do parallel reads, so...); the original sync pbs-restore only showed about 98% CPU usage in htop.
First, some tests with my 32 GiB VM (zeroes = 64%):
> Results (relative to 32 GiB):
> Host; Method; source; target; Start; End; seconds(End - Start); speed (End-Start); speedup; seconds(PVE log); speed(PVE log); speedup
> Azure L32s_v2; orig. pbs-restore; nvme disk 1 ZFS pool; nvme disk 2 ZFS dir; 21:10:38; 21:13:14; 156; 210.05 MiB/s; 1.0; 58.69; 558.31 MiB/s; 1.0
> Azure L32s_v2; paral.pbs-restore; nvme disk 1 ZFS pool; nvme disk 2 ZFS dir; 21:34:25; 21:34:49; 24; 1365.33 MiB/s; 6.5; 22.85; 1433.99 MiB/s; 2.6
> Azure L32s_v2; orig. pbs-restore; nvme disk 1 ZFS pool; nvme disk 2 ZFS dir; 21:19:51; 21:22:27; 156; 210.05 MiB/s; 1.0; 54.46; 601.66 MiB/s; 1.0
> Azure L32s_v2; paral.pbs-restore; nvme disk 1 ZFS pool; nvme disk 2 ZFS dir; 21:41:53; 21:42:16; 23; 1424.70 MiB/s; 6.8; 22.63; 1447.70 MiB/s; 2.4
> Azure L32s_v2; orig. pbs-restore; nvme disk 1 ext4 dir; nvme disk 2 ext4 dir; 02:10:04; 02:10:49; 45; 728.18 MiB/s; 1.0; 43.97; 745.16 MiB/s; 1.0
> Azure L32s_v2; paral.pbs-restore; nvme disk 1 ext4 dir; nvme disk 2 ext4 dir; 02:12:35; 02:12:56; 21; 1560.38 MiB/s; 2.1; 21.06; 1556.12 MiB/s; 2.1
> Azure L32s_v2; orig. pbs-restore; 2x nvme RAID0 ext4 dir; 2x nvme RAID0 ext4 dir; 01:56:35; 01:57:24; 49; 668.73 MiB/s; 1.0; 48.94; 669.52 MiB/s; 1.0
> Azure L32s_v2; paral.pbs-restore; 2x nvme RAID0 ext4 dir; 2x nvme RAID0 ext4 dir; 22:24:45; 22:25:04; 19; 1724.63 MiB/s; 2.6; 18.67; 1754.79 MiB/s; 2.6
Now some tests with my 750 GiB VM (zeroes = 5%):
> Results (relative to 750 GiB):
> Host; Method; source; target; Start; End; seconds(End - Start); speed (End-Start); speedup; seconds(PVE log); speed(PVE log); speedup
> Azure L32s_v2; orig. pbs-restore; 2x nvme RAID0 ext4 dir; 2x nvme RAID0 ext4 dir; 00:45:19; 01:47:38; 3739; 205,40 MiB/s; 1.0; 3736.73; 205.53 MiB/s; 1.0
> Azure L32s_v2; paral.pbs-restore; 2x nvme RAID0 ext4 dir; 2x nvme RAID0 ext4 dir; 00:23:44; 00:41:00; 1036; 741,31 MiB/s; 3.6; 1034.96; 742.06 MiB/s; 3.6
PVE Logs:
> orig. pbs-restore: restore image complete (bytes=34359738368, duration=58.69s, speed=558.31MB/s)
> paral.pbs-restore: restore image complete (bytes=34359738368, duration=22.85s, speed=1433.99MB/s)
> orig. pbs-restore: restore image complete (bytes=34359738368, duration=54.46s, speed=601.66MB/s)
> paral.pbs-restore: restore image complete (bytes=34359738368, duration=22.63s, speed=1447.70MB/s)
> orig. pbs-restore: restore image complete (bytes=34359738368, duration=43.97s, speed=745.16MB/s)
> paral.pbs-restore: restore image complete (bytes=34359738368, duration=21.06s, speed=1556.12MB/s)
> orig. pbs-restore: restore image complete (bytes=34359738368, duration=48.94s, speed=669.52MB/s)
> paral.pbs-restore: restore image complete (bytes=34359738368, duration=18.67s, speed=1754.79MB/s)
> orig. pbs-restore: restore image complete (bytes=805306368000, duration=3736.73s, speed=205.53MB/s)
> paral.pbs-restore: restore image complete (bytes=805306368000, duration=1034.96s, speed=742.06MB/s)
Maybe anyone is interested in "proxmox-backup-client benchmark --repository chunks2tbnvme":
Host | Datastore<br>(tls bench only) | aes256_gcm<br>MB/s | compress<br>MB/s | decompress<br>MB/s | sha256<br>MB/s | tls<br>MB/s | verify<br>MB/s
-- | -- | --: | --: | --: | --: | --: | --:
Azure L32s_v2 | chunks2tbnvme | 2552.57 | 549.95 | 856.72 | 1479.59 | 588.78 | 545.02
More information about the pbs-devel
mailing list