Zstd

Wikipediasta
Siirry navigaatioon Siirry hakuun

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.[1] Versiossa 1.3.1 tämä lauseke on poistettu ja lisenssiksi muutettu BSD + GPLv2.[2]

Algoritmi on julkaistu standardina RFC 8478. 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.[3][4]

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.[5]

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. [6]

Käyttö[muokkaa | muokkaa wikitekstiä]

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

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

Lähteet[muokkaa | muokkaa wikitekstiä]