[pve-devel] [PATCH v3 0/13] Fix: #2124 zstd
Alwin Antreich
a.antreich at proxmox.com
Wed Apr 8 12:25:50 CEST 2020
Zstandard (zstd) [0] is a data compression algorithm, in addition to
gzip, lzo for our backup/restore. It can utilize multiple core CPUs. But
by default it has one compression and one writer thread.
Here some quick tests I made on my workstation. The files where placed
on a ram disk. And with dd filled from /dev/urandom and /dev/zero.
__Compression__
file size: 1073741824 bytes
= urandom = = zero =
995ms 1073766414 328ms 98192 zstd -k
732ms 1073766414 295ms 98192 zstd -k -T4
906ms 1073791036 562ms 4894779 lzop -k
31992ms 1073915558 5594ms 1042087 gzip -k
30832ms 1074069541 5776ms 1171491 pigz -k -p 1
7814ms 1074069541 1567ms 1171491 pigz -k -p 4
__Decompression__
file size: 1073741824 bytes
= urandom = = zero =
712ms 869ms zstd -d
685ms 872ms zstd -k -d -T4
841ms 2462ms lzop -d
5417ms 4754ms gzip -k -d
1248ms 3118ms pigz -k -d -p 1
1236ms 2379ms pigz -k -d -p 4
And I used the same ramdisk to move a VM onto it and run a quick
backup/restore.
__vzdump backup__
INFO: transferred 34359 MB in 69 seconds (497 MB/s) zstd -T1
INFO: transferred 34359 MB in 37 seconds (928 MB/s) zstd -T4
INFO: transferred 34359 MB in 51 seconds (673 MB/s) lzo
INFO: transferred 34359 MB in 1083 seconds (31 MB/s) gzip
INFO: transferred 34359 MB in 241 seconds (142 MB/s) pigz -n 4
__qmrestore__
progress 100% (read 34359738368 bytes, duration 36 sec)
total bytes read 34359738368, sparse bytes 8005484544 (23.3%) zstd -d -T4
progress 100% (read 34359738368 bytes, duration 38 sec)
total bytes read 34359738368, sparse bytes 8005484544 (23.3%) lzo
progress 100% (read 34359738368 bytes, duration 175 sec)
total bytes read 34359738368, sparse bytes 8005484544 (23.3%) pigz -n 4
v2 -> v3:
* split archive_info into decompressor_info and archive_info
* "compact" regex pattern is now a constant and used in
multiple modules
* added tests for regex matching
* bug fix for ctime of backup files
v1 -> v2:
* factored out the decompressor info first, as Thomas suggested
* made the regex pattern of backup files more compact, easier to
read (hopefully)
* less code changes for container restores
Thanks for any comment or suggestion in advance.
[0] https://facebook.github.io/zstd/
Alwin Antreich (13):
__pve-storage__
storage: test: split archive format/compressor
test: parse_volname
test: list_volumes
Fix: backup: ctime taken from stat not file name
test: path_to_volume_id
backup: more compact regex for backup file filter
Fix: #2124 storage: add zstd support
test/Makefile | 5 +-
PVE/Storage.pm | 85 ++++++---
PVE/Storage/Plugin.pm | 9 +-
test/run_parser_tests.pl | 17 ++
test/test_archive_info.pm | 57 ++++++
test/test_list_volumes.pm | 313 +++++++++++++++++++++++++++++++++
test/test_parse_volname.pm | 98 +++++++++++
test/test_path_to_volume_id.pm | 104 +++++++++++
8 files changed, 661 insertions(+), 27 deletions(-)
create mode 100755 test/run_parser_tests.pl
create mode 100644 test/test_archive_info.pm
create mode 100644 test/test_list_volumes.pm
create mode 100644 test/test_parse_volname.pm
create mode 100644 test/test_path_to_volume_id.pm
__pve-container__
Fix: #2124 add zstd
src/PVE/LXC/Create.pm | 1 +
1 file changed, 1 insertion(+)
__qemu-server__
restore: replace archive format/compression regex
Fix #2124: Add support for zstd
PVE/QemuServer.pm | 38 +++++++-------------------------------
1 file changed, 7 insertions(+), 31 deletions(-)
__pve-manager__
Fix #2124: Add support for zstd
PVE/VZDump.pm | 11 +++++++++--
debian/control | 1 +
www/manager6/form/CompressionSelector.js | 3 ++-
3 files changed, 12 insertions(+), 3 deletions(-)
__pve-guest-common__
Fix: #2124 add zstd support
PVE/VZDump/Common.pm | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
--
2.20.1
More information about the pve-devel
mailing list