Zstd

Zstandard on Yann Colletin Facebookilla (nykyisin Meta Platforms) kehittämä häviötön pakkausalgoritmi, jonka referenssitoteutus zstd on julkaistu vapaana avoimen lähdekoodin ohjelmana käyttäväksi. Zstandardin tavoitteena oli saavuttaa zipin ja gzipin käyttämän DEFLATE-algorithmin pakkaussuhde, mutta toimia huomattavasti nopeammin.

Facebook julkaisi Zstandardin ja sen toteutuksen 2016. Referenssitoteutus on julkaistu BSD-lisenssillä Githubissa. Versiossa 1.0 lisättiin mukaan patenttien vastainen lauseke, jonka mukaan lisenssi lakkaa jos Facebookia vastaan nostetaan patenttivaade.
Versiossa 1.3.1 tämä lauseke on poistettu ja lisenssiksi muutettu BSD + GPLv2.

Algoritmi on julkaistu standardina . Tiedostomuodolle on rekisteröity tyyppi "application/zstd" ja tiedostopääte "zst".

Yleisessä käytössä zstd pakkaa 5–10% tehokkaammin kuin DEFLATE ja on 2–3 kertaa nopeampi. Algoritmi on tarkoitettu skaalautuvaksi. Algoritmille on mahdollista käyttää 22 eri pakkaussuhdetta, joista tehokkain pakkaa paremmin kuin bzip2.

Facebookin mukaan zstd on samalla pakkausuhteella 3–5 kertaa nopeampi kuin gzip, tai samalla pakkausnopeudella pakkaa 10–15 % paremmin. Pakkauksen purku on 2–3 kertaa nopeampi riippumatta pakkaussuhteesta. Nopeutuminen on saavutettu suunnittelemalla algoritmi rinnakkaistuvaksi nykyisille suorittimille jakamalla data useaan rinnakkaiseen vuohon. Tämä on kumuloituva usean prosessoriytimen käytön kanssa. Lisäksi on vältetty tarvetta ehdolliselle suoritukselle.

zstd:n erikoisuus on kaksivaiheinen pakkaus. Ohjelma voi rakentaa etukäteen pakattavasta aineistosta sanakirjan (dictionary), jota käytetään pakkauksen optimointiin. Ohjelmassa on myös toteutettu adaptiivinen pakkaus, jolloin ohjelma voi pakata tietovirtaa hyödyntäen vapaan prosessoritehon pitäen pakkausnopeuden (throughput) samana kuin luettava datan nopeus.

Käyttö

Zstandard on otettu mukaan Linux-kerneliin Btrfs, F2FS, SquashFS ja UBIFS-tiedostojärjestelmien tiedostonpakkaukseen.

Arch Linux otti zstd:n käyttöön asennuspakettiensa pakkauksena syksyllä 2019.
Archin mukaan siirtyminen xz-pakkauksesta zstd:hen lisäsi pakettivaraston kokoa vain 0,8 %, mutta nopeutti pakettien purkamista asennusvaiheessa 1300 %.

Lähteet

Pakkausohjelmat
Rootkitit