Yuqori tezlikdagi xatosiz siqishni (davomi)

Ushbu maqola allaqachon yuqori tezlikda ma'lumotlarni siqish mavzusida ikkinchi. Birinchi maqolada 10 GB/sek tezlikda ishlaydigan kompressor tasvirlangan. protsessor yadrosi uchun (minimal siqish, RTT-Min).

Ushbu kompressor allaqachon saqlash vositalarini yuqori tezlikda siqish va kriptografiya kuchini oshirish uchun sud-tibbiy dublikatorlar uskunasiga kiritilgan; u virtual mashinalar tasvirlarini va RAM almashtirish fayllarini yuqori tezlikda saqlashda siqish uchun ham ishlatilishi mumkin. SSD drayvlar.

Birinchi maqolada, shuningdek, ma'lumotlarni siqish parametrlari sezilarli darajada yaxshilangan HDD va SSD disk drayverlarining zaxira nusxalarini (o'rta siqish, RTT-Mid) siqish uchun siqish algoritmini ishlab chiqish e'lon qilindi. Hozirgi vaqtda ushbu kompressor to'liq tayyor va bu maqola bu haqda.

RTT-Mid algoritmini amalga oshiradigan kompressor yuqori tezlik rejimida ishlaydigan WinRar, 7-Zip kabi standart arxivatorlar bilan taqqoslanadigan siqish nisbatini ta'minlaydi. Shu bilan birga, uning ishlash tezligi kamida bir marta kattaroqdir.

Ma'lumotlarni qadoqlash/ochish tezligi siqish texnologiyalarini qo'llash doirasini belgilovchi muhim parametrdir. Terabayt ma'lumotni soniyasiga 10-15 megabayt tezlikda siqish haqida hech kimning o'ylamasligi dargumon (bu standart siqish rejimidagi arxivchilarning tezligi), chunki protsessor to'liq yuklanganda bu deyarli yigirma soat davom etadi. .

Boshqa tomondan, xuddi shu terabaytni taxminan o'n daqiqada soniyasiga 2-3 Gigabayt tezlikda nusxalash mumkin.

Shuning uchun katta hajmli axborotni siqish, agar u haqiqiy kiritish/chiqarish tezligidan past bo'lmagan tezlikda bajarilsa, muhim ahamiyatga ega. Zamonaviy tizimlar uchun bu soniyada kamida 100 Megabayt.

Zamonaviy kompressorlar bunday tezlikni faqat "tezkor" rejimda ishlab chiqishi mumkin. Aynan shu joriy rejimda biz RTT-Mid algoritmini an'anaviy kompressorlar bilan solishtiramiz.

Yangi siqish algoritmini qiyosiy sinovdan o'tkazish

RTT-Mid kompressor sinov dasturining bir qismi sifatida ishladi. Haqiqiy "ishchi" ilovada u tezroq ishlaydi, u ko'p ish zarralarini oqilona ishlatadi va C# emas, balki "oddiy" kompilyatordan foydalanadi.

Qiyosiy sinovda ishlatiladigan kompressorlar turli xil printsiplar asosida qurilganligi va har xil turdagi ma'lumotlar turlicha siqilganligi sababli, sinovning ob'ektivligi uchun "kasalxonadagi o'rtacha haroratni" o'lchash usuli qo'llanildi...

Windows 10 operatsion tizimiga ega mantiqiy diskning sektorlar bo'yicha dump fayli yaratildi; bu har bir kompyuterda mavjud bo'lgan turli xil ma'lumotlar tuzilmalarining eng tabiiy aralashmasi. Ushbu faylni siqish sizga yangi algoritmning tezligi va siqilish darajasini zamonaviy arxivchilarda qo'llaniladigan eng ilg'or kompressorlar bilan solishtirish imkonini beradi.

Mana dump fayli:

Yuqori tezlikdagi xatosiz siqishni (davomi)

Dump fayli PTT-Mid, 7-zip va WinRar kompressorlari yordamida siqilgan. WinRar va 7-zip kompressor maksimal tezlikka o'rnatildi.

Kompressor ishlaydi 7-zip:

Yuqori tezlikdagi xatosiz siqishni (davomi)

U protsessorni 100% yuklaydi, asl dumpni o'qishning o'rtacha tezligi taxminan 60 Megabayt/sek.

Kompressor ishlaydi Winrar:

Yuqori tezlikdagi xatosiz siqishni (davomi)

Vaziyat shunga o'xshash, protsessor yuki deyarli 100%, o'rtacha borini o'qish tezligi taxminan 125 Megabayt/sek.

Oldingi holatda bo'lgani kabi, arxivatorning tezligi protsessorning imkoniyatlari bilan cheklangan.

Kompressorni tekshirish dasturi hozir ishlamoqda RTT-O'rta:

Yuqori tezlikdagi xatosiz siqishni (davomi)

Skrinshotda protsessor 50% yuklanganligi va qolgan vaqt davomida ishlamay turishi ko'rsatilgan, chunki siqilgan ma'lumotlarni yuklash uchun joy yo'q. Ma'lumotlarni yuklash diski (Disk 0) deyarli to'liq yuklangan. Ma'lumotlarni o'qish tezligi (Disk 1) juda katta farq qiladi, lekin o'rtacha 200 Megabayt/sek dan ortiq.

Kompressorning tezligi bu holda siqilgan ma'lumotlarni Disk 0 ga yozish imkoniyati bilan cheklangan.

Endi olingan arxivlarning siqilish nisbati:

Yuqori tezlikdagi xatosiz siqishni (davomi)

Yuqori tezlikdagi xatosiz siqishni (davomi)

Yuqori tezlikdagi xatosiz siqishni (davomi)

Ko'rinib turibdiki, RTT-Mid kompressor siqishni eng yaxshi bajargan; u yaratgan arxiv WinRar arxividan 1,3 Gigabayt va 2,1z arxividan 7 Gigabayt kichikroq edi.

Arxiv yaratish uchun sarflangan vaqt:

  • 7-zip - 26 daqiqa 10 soniya;
  • WinRar - 17 daqiqa 40 soniya;
  • RTT-Mid - 7 daqiqa 30 soniya.

Shunday qilib, hatto RTT-Mid algoritmidan foydalangan holda test, optimallashtirilmagan dastur ham arxivni ikki yarim baravar tezroq yaratishga muvaffaq bo'ldi, arxiv esa raqobatchilarnikidan sezilarli darajada kichikroq bo'lib chiqdi...

Skrinshotlarga ishonmaganlar ularning haqiqiyligini o'zlari tekshirishlari mumkin. Test dasturi quyidagi manzilda mavjud aloqa, yuklab oling va tekshiring.

Ammo faqat AVX-2 qo'llab-quvvatlanadigan protsessorlarda, bu ko'rsatmalarni qo'llab-quvvatlamasdan, kompressor ishlamaydi va eski AMD protsessorlarida algoritmni sinab ko'rmaydi, ular AVX ko'rsatmalarini bajarish nuqtai nazaridan sekin...

Qo'llaniladigan siqish usuli

Algoritm bayt granularligida takrorlangan matn qismlarini indekslash usulidan foydalanadi. Ushbu siqish usuli uzoq vaqtdan beri ma'lum, ammo foydalanilmadi, chunki mos keladigan operatsiya zarur resurslar nuqtai nazaridan juda qimmat va lug'at yaratishdan ko'ra ko'proq vaqt talab qildi. Shunday qilib, RTT-Mid algoritmi "kelajakka qaytish" ning klassik namunasidir ...

PTT kompressorida siqish jarayonini tezlashtirish imkonini beruvchi noyob yuqori tezlikdagi o'yinlarni qidirish skaneridan foydalaniladi. O'z-o'zidan ishlab chiqarilgan skaner, bu "mening jozibam ...", "bu juda qimmat, chunki u butunlay qo'lda ishlangan" (assemblerda yozilgan).

Gugurtni qidirish skaneri ikki darajali ehtimoliy sxema bo'yicha amalga oshiriladi: birinchidan, gugurtning "belgisi" ning mavjudligi tekshiriladi va bu joyda "belgi" aniqlangandan keyingina haqiqiy moslikni aniqlash tartibi. boshlanadi.

O'yinni qidirish oynasi qayta ishlangan ma'lumotlar blokidagi entropiya darajasiga qarab oldindan aytib bo'lmaydigan hajmga ega. To'liq tasodifiy (siqilmaydigan) ma'lumotlar uchun u megabayt o'lchamiga ega, takroriy ma'lumotlar uchun u har doim megabaytdan kattaroqdir.

Ammo ko'pgina zamonaviy ma'lumotlar formatlari siqilmaydi va ular orqali resurs talab qiladigan skanerni ishga tushirish foydasiz va isrofgarchilikdir, shuning uchun skaner ikkita ish rejimidan foydalanadi. Birinchidan, manba matnning takrorlanishi mumkin bo'lgan bo'limlari qidiriladi, bu operatsiya ham ehtimollik usuli yordamida amalga oshiriladi va juda tez (4-6 Gigabayt/sek tezlikda) amalga oshiriladi. Keyinchalik mumkin bo'lgan mos keladigan joylar asosiy skaner tomonidan qayta ishlanadi.

Indeksni siqish unchalik samarali emas, takroriy bo'laklarni indekslar bilan almashtirishingiz kerak va indeks qatori siqilish nisbatini sezilarli darajada kamaytiradi.

Siqish koeffitsientini oshirish uchun bayt satrlarining nafaqat to'liq mosliklari, balki satrda mos keladigan va mos kelmaydigan baytlar bo'lsa, qismanlari ham indekslanadi. Buning uchun indeks formati ikkita blokning mos baytlarini ko'rsatadigan mos keladigan niqob maydonini o'z ichiga oladi. Kattaroq siqish uchun indekslash joriy blokga bir nechta qisman mos keladigan bloklarni joylashtirish uchun ishlatiladi.

Bularning barchasi PTT-Mid kompressorida lug'at usulidan foydalangan holda ishlab chiqarilgan kompressorlar bilan taqqoslanadigan, ammo tezroq ishlaydigan siqishni nisbatini olish imkonini berdi.

Yangi siqish algoritmining tezligi

Agar kompressor kesh xotirasidan eksklyuziv foydalanish bilan ishlayotgan bo'lsa (har bir ip uchun 4 megabayt talab qilinadi), u holda ish tezligi 700-2000 megabayt/sekund oralig'ida. siqilgan ma'lumotlarning turiga qarab va protsessorning ishlash chastotasiga ozgina bog'liq bo'lgan protsessor yadrosi uchun.

Kompressorning ko'p bosqichli amalga oshirilishi bilan samarali miqyoslash uchinchi darajali kesh hajmi bilan belgilanadi. Masalan, "bortda" 9 Megabayt kesh xotiraga ega bo'lgan holda, ikkitadan ortiq siqishni iplarini ishga tushirishning ma'nosi yo'q, bundan tezlik oshmaydi. Ammo 20 megabayt kesh bilan siz allaqachon beshta siqishni ipini ishga tushirishingiz mumkin.

Shuningdek, operativ xotiraning kechikishi kompressor tezligini belgilovchi muhim parametrga aylanadi. Algoritm OPga tasodifiy kirishdan foydalanadi, ularning ba'zilari kesh xotirasiga tushmaydi (taxminan 10%) va u ish tezligini pasaytiradigan OP ma'lumotlarini kutib, bo'sh turishi kerak.

Kompressor tezligiga va ma'lumotlarni kiritish / chiqarish tizimining ishlashiga sezilarli ta'sir qiladi. I/U dan OPga so'rovlar protsessordan ma'lumotlar uchun blokirovka so'rovlari, bu ham siqishni tezligini pasaytiradi. Bu muammo noutbuklar va ish stollari uchun muhim, serverlar uchun esa tizimli avtobusga kirishni boshqarish bloki va ko'p kanalli operativ xotira tufayli unchalik ahamiyatli emas.

Maqolaning butun matnida biz siqilish haqida gapiramiz; dekompressiya ushbu maqola doirasidan tashqarida qoladi, chunki "hamma narsa shokolad bilan qoplangan". Dekompressiya ancha tezroq va kirish/chiqarish tezligi bilan cheklangan. Bitta ipdagi bitta jismoniy yadro 3-4 Gb/sek tezlikni osonlik bilan ochish imkonini beradi.

Bu dekompressiya jarayonida o'yinni qidirish operatsiyasining yo'qligi bilan bog'liq bo'lib, u siqish paytida protsessorning asosiy resurslarini va kesh xotirasini "yeydi".

Siqilgan ma'lumotlarni saqlash ishonchliligi

Ma'lumotlarni siqish (arxivchilar)dan foydalanadigan dasturiy ta'minotning butun sinfi nomidan ko'rinib turibdiki, ular ma'lumotlarni yillar davomida emas, balki asrlar va ming yillar davomida uzoq muddatli saqlash uchun mo'ljallangan...

Saqlash paytida saqlash vositasi ba'zi ma'lumotlarni yo'qotadi, bu erda bir misol:

Yuqori tezlikdagi xatosiz siqishni (davomi)

Ushbu "analog" axborot tashuvchisi ming yillik, ba'zi qismlari yo'qolgan, ammo umuman olganda, ma'lumot "o'qilishi mumkin" ...

Zamonaviy raqamli ma'lumotlarni saqlash tizimlari va ular uchun raqamli tashuvchilarning mas'ul ishlab chiqaruvchilarining hech biri 75 yildan ortiq vaqt davomida ma'lumotlarning to'liq xavfsizligini kafolatlamaydi.
Bu esa muammo, ammo kechiktirilgan muammo, uni avlodlarimiz hal qiladi...

Raqamli ma'lumotlarni saqlash tizimlari nafaqat 75 yildan keyin ma'lumotlarni yo'qotishi mumkin, ma'lumotlardagi xatolar istalgan vaqtda, hatto ularni yozib olish paytida ham paydo bo'lishi mumkin, ular ortiqcha foydalanish va xatolarni tuzatish tizimlari bilan tuzatish orqali bu buzilishlarni minimallashtirishga harakat qilishadi. Ortiqcha va to'g'rilash tizimlari yo'qolgan ma'lumotlarni har doim ham tiklay olmaydi va agar ular tiklansa, tiklash operatsiyasi to'g'ri bajarilganligiga kafolat yo'q.

Va bu ham katta muammo, lekin kechiktirilgan emas, balki hozirgi.

Raqamli ma'lumotlarni arxivlash uchun ishlatiladigan zamonaviy kompressorlar lug'at usulining turli xil modifikatsiyalari asosida qurilgan va bunday arxivlar uchun ma'lumotlarning yo'qolishi halokatli voqea bo'ladi, hatto bunday vaziyat uchun belgilangan atama ham mavjud - "buzilgan" arxiv ...

Lug'atni siqish bilan arxivlarda ma'lumotlarni saqlashning past ishonchliligi siqilgan ma'lumotlarning tuzilishi bilan bog'liq. Bunday arxivdagi ma'lumotlar dastlabki matnni o'z ichiga olmaydi, lug'atdagi yozuvlar raqamlari u erda saqlanadi va lug'atning o'zi joriy siqilgan matn tomonidan dinamik ravishda o'zgartiriladi. Agar arxiv parchasi yo'qolsa yoki buzilgan bo'lsa, barcha keyingi arxiv yozuvlarini lug'atdagi yozuvning mazmuni yoki uzunligi bo'yicha aniqlab bo'lmaydi, chunki lug'at yozuvi raqami nimaga mos kelishi aniq emas.

Bunday "buzilgan" arxivdan ma'lumotni tiklash mumkin emas.

RTT algoritmi siqilgan ma'lumotlarni saqlashning yanada ishonchli usuliga asoslangan. U takrorlanuvchi fragmentlarni hisobga olishning indeks usulidan foydalanadi. Siqilishning bunday yondashuvi axborotni saqlash muhitida buzilish oqibatlarini minimallashtirishga va ko'p hollarda ma'lumotni saqlash paytida paydo bo'lgan buzilishlarni avtomatik ravishda tuzatishga imkon beradi.
Buning sababi, indeksni siqish holatida arxiv faylida ikkita maydon mavjud:

  • takroriy bo'limlari olib tashlangan manba matn maydoni;
  • indeks maydoni.

Axborotni tiklash uchun juda muhim bo'lgan indeks maydoni katta hajmga ega emas va ishonchli ma'lumotlarni saqlash uchun takrorlanishi mumkin. Shuning uchun, agar manba matni yoki indeks qatorining bir qismi yo'qolsa ham, boshqa barcha ma'lumotlar "analog" saqlash vositasi bilan rasmdagi kabi muammosiz tiklanadi.

Algoritmning kamchiliklari

Kamchiliksiz afzalliklar yo'q. Indeksni siqish usuli qisqa takrorlanuvchi ketma-ketliklarni siqmaydi. Bu indeks usulining cheklovlari bilan bog'liq. Indekslarning hajmi kamida 3 bayt va hajmi 12 baytgacha bo'lishi mumkin. Agar takrorlash uni tavsiflovchi indeksdan kichikroq hajmga ega bo'lsa, unda siqilgan faylda bunday takrorlanishlar qanchalik tez-tez aniqlansa ham, u hisobga olinmaydi.

An'anaviy lug'atni siqish usuli qisqa uzunlikdagi bir necha marta takrorlashni samarali tarzda siqib chiqaradi va shuning uchun indeksni siqishdan ko'ra yuqoriroq siqish nisbatiga erishadi. To'g'ri, bunga markaziy protsessorning yuqori yuklanishi tufayli erishiladi; lug'at usuli ma'lumotlarni indeks usulidan ko'ra samaraliroq siqishni boshlashi uchun ma'lumotlarni qayta ishlash tezligini realda sekundiga 10-20 megabaytgacha kamaytirishi kerak. to'liq CPU yuki bilan hisoblash o'rnatish.

Bunday past tezliklar zamonaviy ma'lumotlarni saqlash tizimlari uchun qabul qilinishi mumkin emas va amaliy emas, balki ko'proq "akademik" qiziqish uyg'otadi.

Axborotni siqish darajasi allaqachon ishlab chiqilayotgan RTT algoritmining (RTT-Max) keyingi modifikatsiyasida sezilarli darajada oshiriladi.

Shunday qilib, har doimgidek, davom etish uchun ...

Manba: www.habr.com

a Izoh qo'shish