Liela ātruma atteices droŔa saspieŔana (turpinājums)

Šis raksts ir jau otrais ātrgaitas datu kompresijas tēmā. Pirmajā rakstā bija aprakstīts kompresors, kas darbojas ar ātrumu 10 GB/sek. uz vienu procesora kodolu (minimālā kompresija, RTT-Min).

Å is kompresors jau ir ieviests kriminālistikas pavairotāju iekārtās datu nesēju izgāztuvju ātrdarbÄ«gai saspieÅ”anai un kriptogrāfijas stiprÄ«bas uzlaboÅ”anai; to var izmantot arÄ« virtuālo maŔīnu attēlu un RAM mijmaiņas failu saspieÅ”anai, saglabājot tos ātrdarbÄ«bā. SSD diskdziņi.

Pirmajā rakstā tika paziņots arÄ« par saspieÅ”anas algoritma izstrādi HDD un SSD disku disku rezerves kopiju saspieÅ”anai (vidēja kompresija, RTT-Mid) ar ievērojami uzlabotiem datu saspieÅ”anas parametriem. Å obrÄ«d Å”is kompresors ir pilnÄ«bā gatavs, un Å”is raksts ir par to.

Kompresors, kas ievieÅ” RTT-Mid algoritmu, nodroÅ”ina saspieÅ”anas pakāpi, kas ir salÄ«dzināma ar standarta arhivatoriem, piemēram, WinRar, 7-Zip, kas darbojas ātrgaitas režīmā. Tajā paŔā laikā tā darbÄ«bas ātrums ir vismaz par vienu pakāpi lielāks.

Datu iepakoÅ”anas/izpakoÅ”anas ātrums ir kritisks parametrs, kas nosaka saspieÅ”anas tehnoloÄ£iju pielietojuma apjomu. Diez vai kādam ienāks prātā saspiest terabaitu datu ar ātrumu 10-15 megabaiti sekundē (tieÅ”i tāds ir arhivētāju ātrums standarta saspieÅ”anas režīmā), jo ar pilnu procesora slodzi tas prasÄ«tu gandrÄ«z divdesmit stundas. .

No otras puses, vienu un to paÅ”u terabaitu var nokopēt ar ātrumu 2-3 gigabaiti sekundē apmēram desmit minÅ«tēs.

Tāpēc liela apjoma informācijas saspieÅ”ana ir svarÄ«ga, ja tā tiek veikta ar ātrumu, kas nav mazāks par reālās ievades/izvades ātrumu. MÅ«sdienu sistēmām tas ir vismaz 100 megabaiti sekundē.

MÅ«sdienu kompresori var radÄ«t Ŕādus ātrumus tikai ā€œÄtrāā€ režīmā. Å ajā paÅ”reizējā režīmā mēs salÄ«dzināsim RTT-Mid algoritmu ar tradicionālajiem kompresoriem.

Jauna kompresijas algoritma salīdzinoŔā pārbaude

RTT-Mid kompresors darbojās kā daļa no testa programmas. Reālā ā€œdarbaā€ lietojumprogrammā tā darbojas daudz ātrāk, tā saprātÄ«gi izmanto daudzpavedienu veidoÅ”anu un izmanto ā€œparastuā€ kompilatoru, nevis C#.

Tā kā salÄ«dzinoÅ”ajā testā izmantotie kompresori ir veidoti pēc dažādiem principiem un dažāda veida dati saspiež atŔķirÄ«gi, testa objektivitātei tika izmantota ā€œvidējās temperatÅ«ras slimnÄ«cāā€ mērÄ«Å”anas metode...

Tika izveidots loÄ£iskā diska ar operētājsistēmu Windows 10 izgāztuves fails pa sektoru, tas ir visdabiskākais dažādu datu struktÅ«ru sajaukums, kas faktiski pieejams katrā datorā. Å Ä« faila saspieÅ”ana ļaus salÄ«dzināt jaunā algoritma saspieÅ”anas ātrumu un pakāpi ar vismodernākajiem kompresoriem, ko izmanto mÅ«sdienu arhivējos.

Šeit ir izgāztuves fails:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Izdrukas fails tika saspiests, izmantojot PTT-Mid, 7-zip un WinRar kompresorus. WinRar un 7-zip kompresors tika iestatīts uz maksimālo ātrumu.

Kompresors darbojas 7-zip:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Tas noslogo procesoru par 100%, savukārt vidējais sākotnējās izgāztuves nolasÄ«Å”anas ātrums ir aptuveni 60 megabaiti/sek.

Kompresors darbojas WinRAR:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Situācija ir lÄ«dzÄ«ga, procesora noslodze ir gandrÄ«z 100%, vidējais dump lasÄ«Å”anas ātrums ir aptuveni 125 Megabaiti/sek.

Tāpat kā iepriekŔējā gadÄ«jumā, arhivÄ“Å”anas ātrumu ierobežo procesora iespējas.

Tagad darbojas kompresora pārbaudes programma RTT-vid:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Ekrānuzņēmumā redzams, ka procesors ir noslogots uz 50% un pārējo laiku ir dÄ«kstāvē, jo nav kur augÅ”upielādēt saspiestos datus. Datu augÅ”upielādes disks (Disk 0) ir gandrÄ«z pilnÄ«bā ielādēts. Datu lasÄ«Å”anas ātrums (1. disks) ir ļoti atŔķirÄ«gs, bet vidēji vairāk nekā 200 megabaiti/sek.

Kompresora ātrumu Å”ajā gadÄ«jumā ierobežo iespēja ierakstÄ«t saspiestus datus diskā 0.

Tagad iegūto arhīvu saspieŔanas pakāpe:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Var redzēt, ka RTT-Mid kompresors veica vislabāko saspieÅ”anas darbu; tā izveidotais arhÄ«vs bija par 1,3 gigabaitiem mazāks nekā WinRar arhÄ«vs un par 2,1 gigabaitu mazāks nekā 7z arhÄ«vs.

Laiks, kas pavadīts arhīva izveidei:

  • 7-zip ā€“ 26 minÅ«tes 10 sekundes;
  • WinRar ā€“ 17 minÅ«tes 40 sekundes;
  • RTT-Mid ā€“ 7 minÅ«tes 30 sekundes.

Tādējādi pat testa, neoptimizēta programma, izmantojot RTT-Mid algoritmu, spēja izveidot arhīvu vairāk nekā divarpus reizes ātrāk, savukārt arhīvs izrādījās ievērojami mazāks nekā konkurentiem...

Tie, kas netic ekrānuzņēmumiem, var paÅ”i pārbaudÄ«t to autentiskumu. Testa programma pieejama plkst saite, lejupielādējiet un pārbaudiet.

Bet tikai procesoros ar AVX-2 atbalstu, bez Å”o instrukciju atbalsta kompresors nedarbojas un netestē algoritmu uz vecākiem AMD procesoriem, tie ir lēni AVX instrukciju izpildes ziņā...

Izmantotā saspieŔanas metode

Algoritms izmanto metodi atkārtotu teksta fragmentu indeksÄ“Å”anai baitu precizitātē. Å Ä« saspieÅ”anas metode bija zināma jau sen, bet netika izmantota, jo saskaņoÅ”anas darbÄ«ba bija ļoti dārga nepiecieÅ”amo resursu ziņā un prasÄ«ja daudz vairāk laika nekā vārdnÄ«cas veidoÅ”ana. Tātad RTT-Mid algoritms ir klasisks piemērs, kā pārvietoties "atpakaļ uz nākotni"...

PTT kompresorā tiek izmantots unikāls ātrgaitas atbilstÄ«bas meklÄ“Å”anas skeneris, kas ļauj mums paātrināt saspieÅ”anas procesu. PaÅ”taisÄ«ts skeneris, tas ir ā€œmans Å”arms...ā€, ā€œtas ir diezgan dārgs, jo ir pilnÄ«bā roku darbsā€ (rakstÄ«ts montētājā).

AtbilstÄ«bas meklÄ“Å”anas skeneris tiek veikts pēc divu lÄ«meņu varbÅ«tÄ«bas shēmas: vispirms tiek skenēta atbilstÄ«bas ā€œzÄ«mesā€ klātbÅ«tne, un tikai pēc tam, kad Å”ajā vietā ir identificēta ā€œzÄ«meā€, tiek veikta reālas atbilstÄ«bas noteikÅ”anas procedÅ«ra. ir uzsākta.

AtbilstÄ«bas meklÄ“Å”anas logam ir neparedzams izmērs atkarÄ«bā no apstrādātā datu bloka entropijas pakāpes. PilnÄ«gi nejauÅ”iem (nesaspiežamiem) datiem tā izmērs ir megabaiti, datiem ar atkārtojumiem tas vienmēr ir lielāks par megabaitu.

Taču daudzi mÅ«sdienu datu formāti ir nesaspiežami, un resursietilpÄ«ga skenera darbināŔana caur tiem ir bezjēdzÄ«ga un izŔķērdÄ«ga, tāpēc skeneris izmanto divus darbÄ«bas režīmus. Pirmkārt, tiek meklētas avota teksta sadaļas ar iespējamiem atkārtojumiem, Ŕī darbÄ«ba tiek veikta arÄ« ar varbÅ«tÄ«bas metodi un tiek veikta ļoti ātri (ar ātrumu 4-6 Gigabaiti/sek). Pēc tam apgabalus ar iespējamām atbilstÄ«bām apstrādā galvenais skeneris.

Indeksa saspieÅ”ana nav Ä«paÅ”i efektÄ«va, jums ir jāaizstāj dublikāti fragmenti ar indeksiem, un indeksu masÄ«vs ievērojami samazina saspieÅ”anas pakāpi.

Lai palielinātu saspieÅ”anas pakāpi, tiek indeksētas ne tikai pilnÄ«gas baitu virkņu atbilstÄ«bas, bet arÄ« daļējas, kad virknē ir saskaņoti un nesaskaņoti baiti. Lai to izdarÄ«tu, indeksa formātā ir iekļauts atbilstÄ«bas maskas lauks, kas norāda divu bloku atbilstoÅ”os baitus. Vēl lielākai saspieÅ”anai tiek izmantota indeksÄ“Å”ana, lai paÅ”reizējam blokam uzliktu vairākus daļēji atbilstoÅ”us blokus.

Tas viss ļāva PTT-Mid kompresorā iegūt kompresijas pakāpi, kas ir salīdzināma ar kompresoriem, kas izgatavoti, izmantojot vārdnīcas metodi, bet darbojas daudz ātrāk.

Jaunā saspieŔanas algoritma ātrums

Ja kompresors darbojas ar ekskluzÄ«vu keÅ”atmiņas izmantoÅ”anu (katram pavedienam ir nepiecieÅ”ami 4 megabaiti), tad darbÄ«bas ātrums svārstās no 700-2000 megabaitiem/sek. uz vienu procesora kodolu, atkarÄ«bā no saspiežamo datu veida un maz ir atkarÄ«gs no procesora darbÄ«bas frekvences.

Izmantojot kompresora vairākpavedienu ievieÅ”anu, efektÄ«vo mērogojamÄ«bu nosaka treŔā lÄ«meņa keÅ”atmiņas lielums. Piemēram, ja ir 9 megabaitu keÅ”atmiņa, nav jēgas palaist vairāk par diviem kompresijas pavedieniem; ātrums no tā nepalielināsies. Bet ar 20 megabaitu keÅ”atmiņu jÅ«s jau varat palaist piecus kompresijas pavedienus.

ArÄ« RAM latentums kļūst par svarÄ«gu parametru, kas nosaka kompresora ātrumu. Algoritms izmanto nejauÅ”u piekļuvi OP, daļa no kurām nenokļūst keÅ”atmiņā (apmēram 10%) un tai ir jādarbojas dÄ«kstāvē, gaidot datus no OP, kas samazina darbÄ«bas ātrumu.

BÅ«tiski ietekmē kompresora ātrumu un datu ievades/izvades sistēmas darbÄ«bu. PieprasÄ«jumi OP no I/O bloķē datu pieprasÄ«jumus no CPU, kas arÄ« samazina saspieÅ”anas ātrumu. Å Ä« problēma ir nozÄ«mÄ«ga klēpjdatoriem un galddatoriem; serveriem tā ir mazāk nozÄ«mÄ«ga uzlabotas sistēmas kopnes piekļuves vadÄ«bas bloka un daudzkanālu RAM dēļ.

Visā raksta tekstā mēs runājam par saspieÅ”anu; dekompresija paliek ārpus Ŕī raksta darbÄ«bas jomas, jo "viss ir pārklāts ar Å”okolādi". Dekompresija ir daudz ātrāka, un to ierobežo I/O ātrums. Viens fiziskais kodols vienā pavedienā viegli nodroÅ”ina izpakoÅ”anas ātrumu 3-4 GB/s.

Tas ir saistÄ«ts ar to, ka dekompresijas procesa laikā netiek veikta atbilstÄ«bas meklÄ“Å”anas darbÄ«ba, kas saspieÅ”anas laikā ā€œapēdā€ procesora galvenos resursus un keÅ”atmiņu.

Saspiestu datu uzglabāŔanas uzticamība

Kā liecina visas programmatÅ«ras klases nosaukums, kas izmanto datu saspieÅ”anu (arhiverus), tie ir paredzēti ilgstoÅ”ai informācijas glabāŔanai, nevis gadiem, bet gan gadsimtiem un tÅ«kstoÅ”iem...

GlabāŔanas laikā datu nesēji zaudē dažus datus. Å eit ir piemērs:

Liela ātruma atteices droŔa saspieŔana (turpinājums)

Å is ā€œanalogaisā€ informācijas nesējs ir tÅ«kstoÅ” gadus vecs, daži fragmenti pazuduÅ”i, bet kopumā informācija ir ā€œlasāmaā€...

Neviens no atbildÄ«gajiem mÅ«sdienu digitālo datu uzglabāŔanas sistēmu un tiem paredzēto digitālo mediju ražotājiem nesniedz garantijas par pilnÄ«gu datu droŔību vairāk nekā 75 gadu garumā.
Un tā ir problēma, bet atlikta problēma, to atrisinās mūsu pēcteči...

Digitālās datu glabāŔanas sistēmas var zaudēt datus ne tikai pēc 75 gadiem, kļūdas datos var parādÄ«ties jebkurā brÄ«dÄ«, arÄ« to ierakstÄ«Å”anas laikā, tās cenÅ”as minimizēt Å”os kropļojumus, izmantojot redundances un labojot tos ar kļūdu laboÅ”anas sistēmām. Redundances un korekcijas sistēmas ne vienmēr var atjaunot zaudēto informāciju, un, ja tā notiek, nav garantijas, ka atjaunoÅ”anas darbÄ«ba tika pabeigta pareizi.

Un arÄ« Ŕī ir liela problēma, bet ne jau atlikta, bet gan aktuāla.

MÅ«sdienu kompresori, ko izmanto digitālo datu arhivÄ“Å”anai, ir veidoti uz dažādām vārdnÄ«cas metodes modifikācijām, un Ŕādiem arhÄ«viem informācijas daļas nozaudÄ“Å”ana bÅ«s liktenÄ«gs notikums, Ŕādai situācijai ir pat noteikts termins - ā€œsalauztsā€ arhÄ«vs. ...

Zemā uzticamÄ«ba informācijas glabāŔanai arhÄ«vos ar vārdnÄ«cas saspieÅ”anu ir saistÄ«ta ar saspiesto datu struktÅ«ru. Šādā arhÄ«vā esoŔā informācija nesatur avota tekstu, tajā tiek glabāti vārdnÄ«cas ierakstu numuri, un paÅ”u vārdnÄ«cu dinamiski modificē paÅ”reizējais saspiestais teksts. Ja kāds arhÄ«va fragments tiek pazaudēts vai bojāts, visus turpmākos arhÄ«va ierakstus nevar identificēt ne pēc satura, ne pēc ieraksta garuma vārdnÄ«cā, jo nav skaidrs, kam atbilst vārdnÄ«cas ieraksta numurs.

Nav iespējams atjaunot informāciju no tik ā€œsalauztaā€ arhÄ«va.

RTT algoritms ir balstÄ«ts uz uzticamāku saspiestu datu glabāŔanas metodi. Tā izmanto indeksa metodi atkārtotu fragmentu uzskaitei. Å Ä« pieeja saspieÅ”anai ļauj samazināt informācijas izkropļojumu sekas datu nesējā un daudzos gadÄ«jumos automātiski koriģēt izkropļojumus, kas rodas informācijas glabāŔanas laikā.
Tas ir saistīts ar faktu, ka indeksa saspieŔanas gadījumā arhīva failā ir divi lauki:

  • avota teksta lauks, no kura noņemtas atkārtotas sadaļas;
  • indeksa lauks.

Indeksa lauks, kas ir bÅ«tisks informācijas atkopÅ”anai, nav liels, un to var dublēt, lai nodroÅ”inātu uzticamu datu glabāŔanu. Tāpēc, pat ja tiek pazaudēts avota teksta vai indeksu masÄ«va fragments, visa pārējā informācija tiks atjaunota bez problēmām, kā attēlā ar ā€œanaloguā€ datu nesēju.

Algoritma trūkumi

Nav priekÅ”rocÄ«bu bez trÅ«kumiem. Indeksa saspieÅ”anas metode nesaspiež Ä«sas atkārtotas secÄ«bas. Tas ir saistÄ«ts ar indeksu metodes ierobežojumiem. Indeksu lielums ir vismaz 3 baiti un var bÅ«t lÄ«dz 12 baitiem. Ja tiek konstatēts atkārtojums ar mazāku izmēru nekā to aprakstoÅ”ais indekss, tas netiek ņemts vērā neatkarÄ«gi no tā, cik bieži Ŕādi atkārtojumi tiek konstatēti saspiestajā failā.

Tradicionālā vārdnÄ«cas saspieÅ”anas metode efektÄ«vi saspiež vairākus Ä«sa garuma atkārtojumus un tādējādi sasniedz augstāku saspieÅ”anas pakāpi nekā indeksa saspieÅ”ana. Tiesa, tas tiek panākts lielās centrālā procesora slodzes dēļ; lai vārdnÄ«cas metode sāktu saspiest datus efektÄ«vāk nekā indeksa metode, tai jāsamazina datu apstrādes ātrums lÄ«dz 10-20 megabaitiem sekundē reālajā skaitļoÅ”anas instalācijas ar pilnu CPU slodzi.

MÅ«sdienu datu uzglabāŔanas sistēmām tik mazs ātrums ir nepieņemams, un tas ir vairāk ā€œakadēmisksā€ nekā praktisks.

Informācijas saspieÅ”anas pakāpe tiks ievērojami palielināta nākamajā RTT algoritma modifikācijā (RTT-Max), kas jau ir izstrādes stadijā.

Tātad, kā vienmēr, turpinās...

Avots: www.habr.com

Pievieno komentāru