Zstd

Zstandard on 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. Zstandardin kehitti Yann Collet Facebookilla (nykyisin Meta Platforms).

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.https://github.com/facebook/zstd/blob/v1.3.0/PATENTS 
Versiossa 1.3.1 tämä lauseke on poistettu ja lisenssiksi muutettu BSD + GPLv2.https://github.com/facebook/zstd/pull/801 

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.https://www.zdnet.com/article/facebook-open-sources-zstandard-data-compression-algorithm-aims-to-replace-technology-behind-zip/ http://mattmahoney.net/dc/silesia.html 

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.https://engineering.fb.com/2016/08/31/core-data/smaller-and-faster-data-compression-with-zstandard/ 

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.
https://openzfs.org/w/images/b/b3/03-OpenZFS_2017_-_ZStandard_in_ZFS.pdf 

Käyttö

Zstandard on otettu mukaan Linux-kerneliin Btrfs, F2FS, SquashFS ja UBIFS-tiedostojärjestelmien tiedostonpakkaukseen.https://www.phoronix.com/search/Zstd

Arch Linux otti zstd:n käyttöön asennuspakettiensa pakkauksena syksyllä 2019.https://www.phoronix.com/news/Arch-Linux-Pacman-Zstd-Near 
Archin mukaan siirtyminen xz-pakkauksesta zstd:hen lisäsi pakettivaraston kokoa vain 0,8 %, mutta nopeutti pakettien purkamista asennusvaiheessa 1300 %.https://archlinux.org/news/now-using-zstandard-instead-of-xz-for-package-compression/ 

Lähteet

Luokka:Pakkausohjelmat