Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

See artikkel on juba teine teema kiirusest andmete tihendamisel. Esimeses artiklis kirjeldati tihendajat, mis töötab kiirusel 10 Gbyte/s ĂŒhe protsessorituuma kohta (minimaalne tihendus, RTT-Min).

See tihendaja on juba rakendatud kriminalistika duplikaatorite seadmetesse kiirusel andmedumpide tihendamiseks ja krĂŒptograafia vastupidavuse suurendamiseks; samuti saab seda kasutada virtuaalmasinate piltide ja operatiivmĂ€lu swap-failide tihendamiseks nende salvestamisel kiiretel SSD salvestusseadmetel.

Esimeses artiklis kuulutati vÀlja ka HDD ja SSD ketaste varukoopiate tihendusalgoritmi arendamine (keskmine tihendus, RTT-Mid) mÀrkimisvÀÀrselt paranenud andmete tihendamise parameetritega. Praeguseks on see tihendaja tÀielikult valmis ja see artikkel rÀÀgib just temast.

Tihendaja, mis teostab RTT-Mid algoritmi, tagab tihendustaseme, mis on vĂ”rreldav standardsete arhiveerijatega nagu WinRar, 7-Zip, mis töötavad kiirusereĆŸiimis. Samal ajal on tema töökiirus vĂ€hemalt kordades kĂ”rgem.

Andmete pakkimise/avamise kiirus on kriitiline parameeter, mis mÀÀrab tihendustehnoloogiate kasutusala. Harva kellelgi tuleks pĂ€he tihendada terabait andmeid kiirusel 10-15 MegaBaiti sekundis (see on arhiveerijate standardreĆŸiimis saavutatud kiirus), kuna sellele kulub peaaegu kakskĂŒmmend tundi tĂ€isprotsessorikoormuse korral...

Teisest kĂŒljest saab sama terabaiti kopeerida kiirusel umbes 2-3 GigaBaiti sekundis kĂŒmne minuti jooksul.

SeetĂ”ttu on suurtel andmemahtudel teabe tihendamine relevantne, kui seda tehakse mitte madalama kiirusena kui reaalse sisendi/vĂ€ljundi kiirus. Kaasaegsete sĂŒsteemide puhul on see vĂ€hemalt 100 MegaBaiti sekundis.

Need kiirus nĂ€itajad saavad kaasaegsed tihendajad andma ainult «kiire» reĆŸiimis. Just selle aktuaalse reĆŸiimi jĂ€rgi teeme RTT-Mid algoritmi ja traditsiooniliste tihendajate vĂ”rdluse.

Uue tihendusalgoritmi vÔrdlev testimine

Tihendaja RTT-Mid töötas testprogrammi koostisosana. Tegelikus «töötavas» rakenduses töötab see oluliselt kiiremini, kus jÀrjekindlalt kasutatakse mitme lÔimega töötlemist ja rakendatakse «tavalist» kompilaatorit, mitte C#.

Kuna vĂ”rreldes testides kasutatavad kompressorid pĂ”hinevad erinevatel printsiipidel ja erinevad andmetĂŒĂŒbid kokku suruvad erinevalt, kasutati objektiivsuse tagamiseks meetodit "keskmine temperatuur haiglas"


Loodi sektorite kaupa loogilise kettadumpli fail, kus on operatsioonisĂŒsteem Windows 10, see on kĂ”ige loomulikum segu erinevatest andmestruktuuridest, mis tegelikult on igal arvutil. Selle faili kokkusurutamine vĂ”imaldab vĂ”rrelda uue algoritmi kiirus ja kokkusurumise aste kĂ”ige arenenumate kompressorite seas, mida kasutatakse kaasaegsetes arhiivijas.

Siin on see dumpli fail:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Dumpli faili surusid kokku kompressorid RTT-Mid, 7-zip, WinRar. WinRari ja 7-zip kompressorid olid seadistatud maksimaalsele töökiirusel.

Kompressor töötab 7-zip:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

See koormab protsessorit 100%, samal ajal on keskmine kiirus lÀhtedumpli lugemisel umbes 60 MegaBaidi/s.

Kompressor töötab WinRar:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Olukord on sarnane, protsessori koormus on praktiliselt 100%, keskmine kiirus dumpli lugemisel on umbes 125 MegaBaidi/s.

Nagu eelmisel juhul, on arhiivija töö kiirus piiratud protsessori vÔimalustega.

NĂŒĂŒd töötab kompressori testprogramm RTT-Mid:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Ekraanipilt nĂ€itab, et protsessor on koormatud 50% ja ĂŒlejÀÀnud aja on see vaikne, kuna pole kohta, kuhu kokku suruda andmeid. Andmete vĂ€ljastus ketas (Ketas 0) on praktiliselt tĂ€is. Andmete lugemise kiirus (Ketas 1) kĂ”igub tugevalt, kuid keskmiselt on see ĂŒle 200 MegaBaidi/s.

Kompressor töö kiirus on antud juhul piiratud kokku surutud andmete kirjutamisega Kettale 0.

NĂŒĂŒd on saadud arhiivide kokkusurumise aste:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

On nÀhtav, et kompressor RTT-Mid on kÔige paremini kokku surunud, arhiiv, mille ta lÔi, on 1,3 GigaBaiti vÀiksem WinRari arhiivist ja 2,1 GigaBaiti vÀiksem 7z arhiivist.

Aeg arhiivi loomisele:

  • 7-zip – 26 minutit 10 sekundit;
  • WinRar – 17 minutit 40 sekundit;
  • RTT-Mid – 7 minutit 30 sekundit.

Nii et isegi testprogramm, mis pole optimeeritud, suutis RTT-Midi algoritmi kasutades rohkem kui kaks ja pool korda kiiremini arhiivi luua, samal ajal on arhiiv mĂ€rkimisvÀÀrselt vĂ€iksem kui konkurentidel


Need, kes ei usalda ekraanipilte, saavad nende autentsust ise kontrollida. Testprogramm on saadaval lingil, laadige alla ja kontrollige.

Aga ainult AVX-2 toega protsessoritel, neid juhiseid toeta protsessorite puhul kompressor ei tööta, ning Àrge testige algoritmi vanadel AMD protsessoritel, need on AVX kÀsu tÀitmisel aeglased...

Kasutatud kompressioonimeetod

Algritmis kasutatakse korduvate tekstifragmentide indekseerimise meetodit baitide granulaarsuses. Selline tihendamise meetod on tuntud juba pikka aega, kuid seda ei ole kasutatud, kuna vasteotsingu teostamine oli ressursside osas vÀga kulukas ja nÔudis aega oluliselt rohkem kui sÔnastiku koostamine. Seega on algoritm RTT-Mid klassikaline nÀide liikumisest "tagasi tulevikku"...

RTT kompressor kasutab ainulaadset kiirete vasteotsingu skannerit, see vÔimaldas kiirendada kompressiooniprotsessi. Skanner on tehtud kÀsitööna, "mu ilus", "hind on suur, kuna see on tÀielikult kÀsitsi valmistatud" (kirjutatud assembleris).

Vasteotsingu skanner on teostatud kaheastmelise tÔenÀosusmeetodi kohaselt, esmalt skaneeritakse "mÀrgi" olemasolu ja alles pÀrast mÀrgi tuvastamist kÀivitatakse reaalse vaste avastamise protseduur.

Vasteotsingu aken on ettearvamatu suurusega, sÔltudes töödeldava andmepaki entropia mÀÀrast. TÀiesti juhuslike (tihendamatute) andmete puhul on selle suurus megabait, korduvate andmete puhul on see alati suurem kui megabait.

Aga paljud tĂ€napĂ€evased andmeformaatide on tihendamatud ja ressursside nĂ”udlik skanner nende peal on kasutu ja raiskav, seetĂ”ttu kasutatakse skanneris kahte tööreĆŸiimi. Esmalt otsitakse originaalteksti osi vĂ”imalike korduste jaoks, see toiming tehakse samuti tĂ”enĂ€osusmeetodi kaudu ja toimub vĂ€ga kiiresti (kiirus 4-6 Gigabaiti/sek). SeejĂ€rel töödeldakse vĂ”imalikud kokkulangevused pĂ”hiskanneriga.

Indekseerimine ei ole vÀga efektiivne, tuleb asendada korduvad fragmentid indeksitega ja indeksimassiiv vÀhendab mÀrgatavalt tihendamise suhet.

Kuna indekseerimise mÀÀr katab mitte ainult tĂ€ielikke vasteid baitide stringidele, vaid ka osalisi, kui stringis on nii vastavad kui ka mitte ŃĐŸĐŸŃ‚ĐČДтстĐČŃƒŃŽŃ‰ĐžĐ” byte'id. Selleks on indeksi formaati kaasatud vaste maski vĂ€li, mis nĂ€itab kahe ploki vastavaid byte'e. Veelgi suuremaks kokkusurutuseks kasutatakse indekseerimist, kus on ĂŒlekattega mitu osaliselt kattuvat plokki, praeguse ploki kohal.

KÔik see vÔimaldas RйT-Mid kompressoril saavutada kokkusurumise taset, mis on vÔrreldav sÔnaraamatute meetodil töötavate kompressoritega, kuid töötab tunduvalt kiiremini.

Uue kokkusurumise algoritmi töökiirus

Kui kompressor töötab mĂ€lukahevormil (ĂŒhe niidi jaoks on vajalik 4 Megabaiti), siis töökiirus kĂ”igub 700-2000 Megabaiti/seki ĂŒhe protsessorituuma kohta, olenevalt tihendatavate andmete tĂŒĂŒbist ja sĂ”ltub vĂ€he protsessori töötamise sagedusest.

Mitme niidiga kompressori rakendamisel mÀÀrab tÔhus skaleeritavus kolmanda taseme vahemÀlu suurus. NÀiteks, kui on olemas 9 Megabaiti vahemÀlu, ei ole mÔtet kÀivitada rohkem kui kahte tihendamisniiti, kuna kiirus ei tÔuse sellest. Kuid 20 Megabaiti vahemÀluga saab juba kÀivitada viis tihendamisniiti.

Samuti on oluline parameeter, mis mÀÀrab kompressori töökiirusel, operatiivmĂ€lu latentsus. Algoritm kasutab juhuslikke pöördumisi OП-le, millest osa ei jĂ”ua vahemĂ€llu (umbes 10%), mistĂ”ttu peab see ootama OП-st andmete saamist, mis vĂ€hendab töökiirust.

Ka andmete sisendi/vĂ€ljundi sĂŒsteemi töö mĂ”jutab mĂ€rkimisvÀÀrselt kompressori kiirus. OП pĂ€ringud sisendi/vĂ€ljundi seostavad CPU andmete taotlusi, mis samuti vĂ€hendab kokkusurumise kiirus. See probleem on oluline sĂŒlearvutitele ja lauaarvutitele, serverid kuna see on vĂ€hem oluline, tĂ€nu arenenumale sĂŒsteemile, mis reguleerib juurdepÀÀsu sĂŒsteemi bussile ja mitmekanalilisele operatiivmĂ€lu.

Kogu artikli tekstis rÀÀgitakse kompressioonist, dekompressioon jÀÀb selle artikli raames vĂ€lja, kuna seal "on kĂ”ik korras". Dekompressioon toimub mĂ€rgatavalt kiiremini ja on piiratud sisendi/vĂ€ljundi kiirusest. Üks fĂŒĂŒsiline sĂŒda suudab ĂŒhes voos rahulikult saavutada 3-4 gigabaiti/s suuruseid lahti pakkimise kiirus.

See on seotud sellega, et lahti pakkimise protsessis puudub vaste otsimise operatsioon, mis "neelab" kompressiooniprotsessi kÀigus peamisi protsessori ja vahemÀlu ressursse.

Suruandmete usaldusvÀÀrne sÀilitamine

Nimes tuleneb kogu programmide klassist, mis kasutab andmete kompressiooni (arhivaatorid), nad on mÔeldud teabe pikaajaliseks sÀilitamiseks, mitte aastateks, vaid sajanditeks ja tuhandeteks aastateks...

Andmete sÀilitamise jooksul kaotavad info kandjad osa andmeid, siin on nÀide:

Kiiruselt usaldusvÀÀrne tihendus (JÀtkukiri)

Sellel "analoogsel" teabe kandjal on aastatuhande ajalugu, mĂ”ned fragmendid on kadunud, kuid ĂŒldiselt on info "loetav"...

Ükski vastutav kaasaegne digitaalsete andmesalvestussĂŒsteemide tootja ega digitaalsete andmevahendite tootja ei anna garantiisid, et andmed sĂ€ilivad tĂ€ielikult ĂŒle 75 aasta.
Ja see on probleem, kuid probleem, mis on edasi lĂŒkatud, lahendavad selle meie jĂ€reltulijad...

Digitaalsete andmete salvestussĂŒsteemid vĂ”ivad kaotada andmeid mitte ainult 75 aasta pĂ€rast, andmevead vĂ”ivad ilmneda igal ajal, isegi nende salvestamise ajal. Nende moonutuste minimeerimiseks pĂŒĂŒavad nad kasutada liigset teavet ja korrigeerida vigade parandamise sĂŒsteemide abil. Liigne teave ja vigade parandamise sĂŒsteemid suudavad kaotatud teavet kaugelt mitte alati taastada, ja isegi kui nad taastavad, ei ole garantiid, et taastamisoperatsioon toimus Ă”igesti.

Ja see on samuti suur probleem, kuid mitte edasi lĂŒkatud, vaid praegune.

Kaasaegsed kompressorid, mida kasutatakse digitaalsete andmete arhiveerimiseks, pĂ”hinevad erinevatel sĂ”naraamatu meetodi modifikatsioonidel, ja selliste arhivide puhul on teabe fragmendi kaotamine fataalne sĂŒndmus. Sellise olukorra jaoks on olemas isegi vĂ€ljakujunenud mĂ”isted — "rikkis" arhiiv...

Madala usaldusvÀÀrsus andmete sĂ€ilitamisel sĂ”naraamiga tihendatud arhiivides on seotud tihendatud andmete struktuuriga. Sellises arhiivis ei ole algset teksti, vaid seal hoitakse sĂ”naraamatu salvestuste numbreid, samas kui sĂ”naraamat muudetakse dĂŒnaamiliselt jooksva tihendatava teksti pĂ”hjal. Arhiivi murrangu vĂ”i moonduse korral on kĂ”iki jĂ€rgnevaid arhiivi salvestusi vĂ”imatu tuvastada ei sisu ega sĂ”naraamatu salvestuse pikkuse jĂ€rgi, kuna ei ole selge, millele vastab sĂ”naraamatu salvestuse number.

Teavet sellisest "katkestatud" arhiivist ei ole vÔimalik taastada.

RTT algoritm pÔhineb usaldusvÀÀrsemal meetodil tihendatud andmete hoidmiseks. Siin rakendatakse indeksimeetodit korduvate fragmentide arvestamiseks. Selline lÀhenemine tihendusele aitab minimeerida andmete moonutamise tagajÀrgi ja paljusid moonutusi, mis esinevad andmete hoidmisel, on vÔimalik automaatselt korrigeerida.
See on tingitud sellest, et indeksitihenduse korral sisaldab arhiivifail kahte vÀljad:

  • algse teksti vĂ€li, millest on eemaldatud korduvate osade osad;
  • indeksite vĂ€li.

Kriitiliselt oluline teabe taastamiseks on indeksi vÀli, mis on suuruselt vÀike ja seda saab andmete usaldusvÀÀrse hoidmise nimel dubleerida. Seega, isegi kui algse teksti vÔi indeksimassi fragment kaob, saab kogu muu teabe taastada ilma probleemideta, nagu pildil sarnase analoogse andmekandja puhul.

Alati on puudusi.

Eeliseid ei ole ilma puudusteta. Indeksimeetod ei tihenda korduvaid lĂŒhikesi jĂ€rjekordi. See on seotud indeksimeetodi piirangutega. Indeksid on vĂ€hemalt 3 biiti suured ja vĂ”ivad ulatuda isegi 12 biidini. Kui esineb kordus, mille suurus on vĂ€iksem kui seda kirjeldav indeks, siis ei arvestata seda, olenemata sellest, kui tihti sellised kordused esinevad tihendatud failis.

Traditsiooniline, sĂ”naraamatupĂ”hine kompressioonimeetod tĂ”husalt tihendab lĂŒhikesi korduseid ja seega saavutab suurema tihendusteguri kui indeksikompressioon. Kuid see saavutatakse protsessorile kĂ”rgema koormuse hinnaga, et sĂ”naraamatupĂ”hine meetod hakkaks andmeid efektiivsemalt tihendama, peab see vĂ€hendama andmete töötlemise kiiruseni 10-20 megabaiti sekundis reaalsetes arvutuses, kui CPU on tĂ€ielikult koormatud.

Nii madalad kiirusd on tĂ€napĂ€evaste andmesalvestussĂŒsteemide jaoks vastuvĂ”etamatud ja pakuvad rohkem "akadeemilist" huvi kui praktilist.

Teabe tihendamise tase suureneb mÀrkimisvÀÀrselt jÀrgmises RTT (RйT- Max) algoritmi modifikatsioonis, mis on juba arendamisel.

Nii et nagu ikka, jĂ€rgnevad sĂŒndmused


Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster