lz4
Obsah
LZ4: Šampion v rychlosti komprese
LZ4 vytvořil Yann Collet (který stojí i za algoritmem ZSTD) v roce 2011. Jeho hlavní filozofií je, že dekomprese by měla probíhat rychlostí blízkou limitům propustnosti paměti RAM.
1. Princip fungování (Byte-oriented LZ77)
LZ4 pracuje na principu vyhledávání duplicitních sekvencí v datech pomocí posuvného okna (sliding window).
- Literály: Pokud algoritmus nenajde shodu, zapíše data přímo jako „literál“.
- Reference (Match): Pokud najde stejnou sekvenci, kterou už viděl, zapíše pouze dvojici (offset, length) – tedy informaci „vrať se o X bajtů zpět a zkopíruj Y bajtů“.
Proč je tak rychlý?
- Optimalizace pro moderní CPU: Formát dat je navržen tak, aby minimalizoval větvení v kódu (branching) a umožnil efektivní využití instrukcí procesoru.
2. Klíčové vlastnosti
- Extrémní dekomprese: Rychlost dekomprese často dosahuje několika GB/s na jedno jádro procesoru.
- Asymetrie: Komprese je o něco pomalejší než dekomprese, ale stále patří k nejrychlejším na trhu.
- Paralelizace: LZ4 lze snadno rozdělit do bloků a komprimovat/dekomprimovat více vlákny současně.
3. Praktické využití
Souborové systémy a úložiště
V systémech jako ZFS nebo Btrfs je LZ4 často výchozím kompresním algoritmem.
- Zvýšení výkonu: Paradoxně může zapnutí LZ4 zrychlit zápis na pomalé disky. Procesor data zkomprimuje tak rychle, že na disk se fyzicky zapisuje méně dat, což trvá kratší dobu než zápis nekomprimovaných dat.
Linux Kernel
- zRam / zSwap: Linux používá LZ4 pro kompresi dat v paměti RAM, čímž efektivně zvětšuje dostupnou paměť za cenu minimální režie CPU.
- Bootování: Jádro Linuxu zkomprimované pomocí LZ4 se načítá nejrychleji ze všech dostupných metod.
Big Data a Sítě
- Používá se v protokolech jako Apache Cassandra, Hadoop nebo při přenosu dat v reálném čase, kde je latence kritickým faktorem.
4. Srovnání výkonu
| Algoritmus | Rychlost komprese | Rychlost dekomprese | Kompresní poměr |
|---|---|---|---|
| LZ4 | 10/10 (Extrémní) | 10/10 (Extrémní) | 4/10 (Nízký) |
| ZSTD | 7/10 (Vysoká) | 8/10 (Velmi vysoká) | 8/10 (Vysoký) |
| GZIP | 3/10 (Pomalá) | 6/10 (Střední) | 7/10 (Vysoký) |
—
Zajímavost: Existuje i varianta LZ4_HC (High Compression), která obětuje rychlost komprese (stává se mnohem pomalejší), aby dosáhla lepšího kompresního poměru, ale zachovává si bleskovou rychlost dekomprese. Je ideální pro data, která se „jednou zapíšou a často čtou“.
Související: ZFS, Linux, I/O, JavaScript
lz4.txt · Poslední úprava: autor: admin
