Nejlepší nastavení komprese v 7zip

Martin.V

Nejlepší nastavení komprese v 7zip
« kdy: 23. 03. 2017, 22:17:22 »
Dobry vecer,

Uz se s tim peru nekolik hodin snazim se najit a pochopit prikaz pro nejlepsi kompresi pomoci LZMA2 v programu 7zip.

Kód: [Vybrat]
7z a -t7z Files.7z -m0=BCJ2 -m1=LZMA2:d=1024m -aoa
Jestli to chapu dobre tak rozdil v "-m0" a "-m1" je ten ze 0 ma prednostni kompresi jak 1 a a BCJ2 se pouziva pro exe soubory protoze ma lepsi kompresi jak LZMA2 jenv pripade asi exe souboru... to -aoa nevim co je :-D

Budu zalohovat kazdych 5min slozky ktere maji asi 5-150mb
a potrebuji nejlepsi kompresi (cpu a ramky me nezajimaji)

Prosim pomocte
« Poslední změna: 23. 03. 2017, 23:08:52 od Petr Krčmář »


Jirsákova tchýně

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #1 kdy: 24. 03. 2017, 01:28:37 »
Budu zalohovat kazdych 5min slozky ktere maji asi 5-150mb
a potrebuji nejlepsi kompresi (cpu a ramky me nezajimaji)

Ne, potřebuješ zálohování, co není úplně dementní.

robotron

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #2 kdy: 24. 03. 2017, 01:46:01 »
potrebuji nejlepsi kompresi (cpu a ramky me nezajimaji)

Vynikajici zadani! V tom pripade kasli na naky trapny LZMA2 a rovnou udelej optimalni kompresi odpovidajici cca Kolmogorovove-Chaitinove slozitosti. Vyber si bajtkod nebo rovnou asm a staci vyzkouset vsechny programy o delce mensi, nez je komprimovanej soubor, od nejkratsiho. Kterej z nich vypise na stdout komprimovanej soubor jako prvni, stava se vitezem a bude tvorit vyslednej archiv. A navic je to automaticky samorozbalovaci!

Skoda, ze vetsina z nas si tolik CPU vykonu dovolit nemuze, uz jen kvuli delce zivota. (Na RAM to naopak zas tak moc narocny neni.)

nobody(ten pravej)

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #3 kdy: 24. 03. 2017, 02:01:18 »
-aoa je volba pouzivana pro ROZBALOVANI a znamena "prepisuj vsechny existujici soubory bez dotazovani" ;)

https://sevenzip.osdn.jp/chm/cmdline/switches/overwrite.htm

Honza1

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #4 kdy: 24. 03. 2017, 09:17:49 »
7z a -t7z -m0=lzma -mx=9 -mfb=273 -md=1024m -ms=on JmenoArchiovu.7z

7z na zacatku plati pro p7zip-full, pro neplnohodnotny 7z mala zmena pocatecniho prikazu na 7za, tedy:

7za a -t7z -m0=lzma -mx=9 -mfb=273 -md=1024m -ms=on JmenoArchiovu.7z

Jmeno archivu muzes zadat jako promennou v bashi
lzma je dobra volba (o malicko lepsi mozna lzma2, nevim, jestli je podporovana)
9 je maximalni mira komrese, tedy ultra
273 je delka slova (cim vic tim lip, komrese trva dyl, 273 je maximum)
1024m je velikost slovniku 1024MB. To je maximalni moznost, i kdyz ted uz jde MOZNA zadat vic.
Jenze velikost slovniku zabere v RAM cca 11ti nasobek (tedy pro 1024 MB 10,7 GB), ale pokud ma slozka 150 MB, bude ta velikost slovniku jen 192 MB, vic nebude bez ohledu na nastaveni.
Pak se jeste do RAM krome slovniku musi nacpat souborovy seznam, to je cca 1-1,5 GB na milion souboru v zavislosti na delce nazvu souboru vc. cely cest.
Ruchlost komprese je pri danem nastaveni 1000-3000 kB/s (text pomaleji, obrazky ryuchleji).

Ve vyslednem archivu je i filelist i adresarova struktura komprimovana.

POKUD NEBUDE RAM STACIT (SLOVNIK a FILELIST), ZKONCI TO CHYBOU CANT ALLOCATE REQUIRED MEMORY.

7zip (v Linuxu p7zip-full) umi dobre hledat a komprimovat podobnosti i mezi ruznymi soubory (hodi se u podobnych html souboru ci obrazku), ne jen v jednom souboru, velmi dobre se komprimuji duplicitni soubory. Ze 100 GB html textu lze udelat i 1 GB, nekdy i min.


ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Nejlepší nastavení komprese v 7zip
« Odpověď #5 kdy: 24. 03. 2017, 09:43:59 »
Ještě se to liší podle parametry -mmt=[on|off|N] kde N je počet vláken (tuším jen pro LZMA2) - výrazně zrychluje kompresi. U 1024M slovníku je potřeba např. u 8 vláken cca 50GB RAM, u 4 vláken 25 GB RAM...

trubicoid2

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #6 kdy: 24. 03. 2017, 10:40:21 »
jestli je rychlost jedno, tak bych zkusil jeste lrzip, ten umi taky lzma, ale i lepsi a pomalejsi zpaq

lrzip -Uzp 1 -L 9

(i kdyz asi -L 9 pro zpaq neplati)

https://github.com/ckolivas/lrzip

davkol

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #7 kdy: 24. 03. 2017, 13:06:35 »
Asi tak. Proč se snažit nahodit parametry typu velikost okna, když jde použít lepší algoritmus (jako PAQ)?

Honza1

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #8 kdy: 24. 03. 2017, 22:08:10 »
Ještě se to liší podle parametry -mmt=[on|off|N] kde N je počet vláken (tuším jen pro LZMA2) - výrazně zrychluje kompresi. U 1024M slovníku je potřeba např. u 8 vláken cca 50GB RAM, u 4 vláken 25 GB RAM...

U LZMA1 zabere 1024m 10,7 GB, vlakna dokaze vyuzit max. 2. U LZMA2 evidentne zvada vice. Zatimco u LZMA1 stale jeden slovnik bezi pod 1-2 vlakny (blok dat 1024 MB), u LZMA2 to vypada, ze bezi vice bloku-slovniku najednou (kazdy blok 1024m zabere urcitou cast pameti a pokud paralelne bezi vic bloku, nascita se to, dejme tomu, ze pro kazdy blok-slovnik vyuzije 2 vlakna a 12 GB pameti, pak je to okolo 50 GB RAM pri 4 blocich dat-slovnicich po 1024 MB).

Honza1

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #9 kdy: 24. 03. 2017, 22:11:56 »
Ale pokud jsou data velka do 150 MB na jeden zatah, nema smysl poustet vice vlaken a ani s RAM to nebude tak horke. Pak jeste je do naroku na RAM krome slovniku treba pripocist seznam souboru s kompletnimi cestami da cca 0.5-3 MB na tisic souboru (a nejvic pameti to sezere nakonci vytvareni archivu, kdyz se komprimuje filelist).

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Nejlepší nastavení komprese v 7zip
« Odpověď #10 kdy: 25. 03. 2017, 09:36:41 »
Ale pokud jsou data velka do 150 MB na jeden zatah, nema smysl poustet vice vlaken a ani s RAM to nebude tak horke. Pak jeste je do naroku na RAM krome slovniku treba pripocist seznam souboru s kompletnimi cestami da cca 0.5-3 MB na tisic souboru (a nejvic pameti to sezere nakonci vytvareni archivu, kdyz se komprimuje filelist).

To je otázka, jestli pak není komprese s menším slovníkem u takových dat na 4 jádrovém či 8 jádrovém CPU výrazně rychlejší než to hrnout přes jedno jádro.

Re:Nejlepší nastavení komprese v 7zip
« Odpověď #11 kdy: 25. 03. 2017, 09:41:08 »
No jestli ti jde o co nejlepsi kompresi a opravdu te nezajima narocnost na procesor tak misto hrani s parametramam LZMA pouzij uplne jinej algoritmus (neco z rodiny PAQ - koukni napr. na PAQ8PX nebo PAQ8HP12). Ale pocitej s tim ze tech 150MB muzes i na dost silnym CPU komprimovat treba i nekolik dni... Nicmene vysledek bude prakticky minimalni mnozstvi dat.

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Nejlepší nastavení komprese v 7zip
« Odpověď #12 kdy: 25. 03. 2017, 09:43:12 »
No jestli ti jde o co nejlepsi kompresi a opravdu te nezajima narocnost na procesor tak misto hrani s parametramam LZMA pouzij uplne jinej algoritmus (neco z rodiny PAQ - koukni napr. na PAQ8PX nebo PAQ8HP12). Ale pocitej s tim ze tech 150MB muzes i na dost silnym CPU komprimovat treba i nekolik dni... Nicmene vysledek bude prakticky minimalni mnozstvi dat.

To se tazateli vyloženě hodí, když to chce zálohovat co 5 min :-D

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Nejlepší nastavení komprese v 7zip
« Odpověď #13 kdy: 25. 03. 2017, 10:20:14 »
To se tazateli vyloženě hodí, když to chce zálohovat co 5 min :-D

To neni problem. Staci mit dostatecny pocet stroju, z nichz kazdy bude resit jednu zalohu. Staci otestovat, jak dlouho se dela jedna zaloha a pak vim, ze jede 12 zaloh za hodinu, hodin je ve dni 24 a pak uz to jen vynasobis a navrsis o rezervu, kdyby se zalohy zpomalily vlivem komplikovanejsich dat.

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Nejlepší nastavení komprese v 7zip
« Odpověď #14 kdy: 25. 03. 2017, 11:25:56 »
To se tazateli vyloženě hodí, když to chce zálohovat co 5 min :-D

To neni problem. Staci mit dostatecny pocet stroju, z nichz kazdy bude resit jednu zalohu. Staci otestovat, jak dlouho se dela jedna zaloha a pak vim, ze jede 12 zaloh za hodinu, hodin je ve dni 24 a pak uz to jen vynasobis a navrsis o rezervu, kdyby se zalohy zpomalily vlivem komplikovanejsich dat.

Dneska se to řeší pronájmem strojového času v cloudu přece ;D, výkonu je hromada