Yesterday, 18:35
>> 1) Any compression algorithms would benefit from MT, when you can feed them different blocks.
> In some cases separating the blocks considerably reduces efficiency.
Sure, it depends on inter-block matches, and whether blocks break
the internal data structure, which could be important for format detection
and/or recompression.
But recompression (forward transform) is usually slower than 50MB/s anyway,
we have CDC dedup to take care of long inter-block matches,
fast dictionary methods can be used to factor out inter-block matches,
and nothing of above is really relevant when we're dealing with TBs of data -
we'd be able to compress 100GB blocks in parallel, and that would barely affect the CR
at all, because only specialized dedup algorithms handle that scale -
for normal codecs its good if they can handle 1-2GB windows.
> And those who use servers with 16 physical cores often will not have 1TB of data, but maybe 10. Or 100.
As Bulat already said, that won't be unique data which has to be compressed
with actual compression algorithms.
Most of that data would be handled by dedup module in any case,
so the speed of compression algorithm won't affect the overall performance that much.
> But it is not exactly a common system, nor a requirement that seems
> realistic to me for new software
As I already calculated, 80MB/s is enough to compress 1TB of new data
every 4 hours in 1 thread.
You'd only use 16 if you really want it to run faster for some reason.
> When you need to have 600TB of backup space don't worry too much about saving 20%.
> Just buy some other hard disks.
Maybe, but if the question is - buy extra 200TB of storage or use new free software
(like your zpaq) to save 20% of space - are you that certain about the answer?
> I point out, however, that the main backup software houses
> in the world for virtual systems do not think so.
> Which compress a little, ~deflate for example.
Its more about ignorance and fashion than anybody actually evaluating their choices.
Most even use default zlib when there're many much faster optimized implementations
of the same API.
For example, did you properly evaluate zstd for your use case?
(Not just default levels, but also --fast ones, dictionary modes, manual parameter setting).
If not, how you can say that zlib or LZ4 are better?
> This does not mean that "we" are right,
> but I expect a new software AT LEAST outperform the "old" ones.
This is actually true in zlib vs zstd case,
and seems to be rather common for goals of many other codecs too.
But for me compression ratio is more interesting,
so I made this thread about new algorithms with different properties,
rather than about making zstd 2x faster via SIMD tricks.