Låg cpu och disk utilization vid uppackning av komprimerade filer

Permalänk
Medlem

Låg cpu och disk utilization vid uppackning av komprimerade filer

Tjena Swec,

Här är en grej som gör mig förvirrad men blir oklar på var flaskhalsen är.
Lägger upp ett scenario här.

Jag har ett rar-arkiv som är totalt 50gb indelat på 100 filer på ca 500mb styck.
Jag decompressa dessa filerna med 7-zip

Det som händer när jag packar upp dessa filerna är att jag landar rund 160mb/s
CPU-Användning är ungefär på 10% har en 10900K (10c/20t) och ingen annan I/O som körs.
Det används runt 11GB minne när detta körs (har 32gb)

Disken jag testat emot är en samsung 970 EVO Plus på 1TB - Crystaldiskmark ger mig 3500/3200mb i de syntetiska testerna.
Kopierar jag filer på disken eller flyttar till disken från min andra NVME Disk WD SN750 så ligger dessa runt 1.5gb/s.

Kan ej se i 7-zip att det finns något att göra rent inställningsmässigt för att förändra beteendet och hittar inga trådar om detta på internet, kan någon potentiellt upplysa mig om vad som är eventuellt the culprit? Hur ser det själv ut när ni packar upp filer?

Visa signatur

10900K @ 5.3GHz || Asus Maximus XII Hero || Custom Loop || EK-CoolStream RAD XE 360 + Alphacool Nexxos XT45 || EK Quantum Velocity CPU Block || EK FLT 360 D5 || Asus Strix RTX 3090 OC || 32GB g.skill Trident-Z CL16 @ 4000MHz || 1TB Samsung 970 EVO Plus - 1TB WD SN750 || Phanteks Enthoo Pro 2 || Seasonic Prime TX 1000W || Asus PG27VQ ||

Permalänk
Keeper of the Bamse

Vid komprimering av filer kan du välja hur många trådar du ska använda, hur aggressiv komprimering (normal, fast, ultra etc) och word size. Detta lagras väl som meta-data i arkivet och sen vid upp-packning så gör datorn en "Best effort"?

Visa signatur

i7 10770K, NH-D15. 16GB corsair. RTX 3080. 3TB nvme. Samsung G9. Fractal Torrent Compact. Corsair RM850.
Logitech G pro wireless mouse. Logitech TKL915 wireless. Logitech Pro X Wireless.
Macbook pro M1 (16GB, 512GB). HP Reverb G2.
www.bamseclockers.com

Permalänk
Medlem

Att packa upp grejor är uppenbarligen inte helt straight forward att parallellisera så det kan ju vara så att din låga cpu användning är att pga det bara används en tråd för uppackning och en stackars core jobbar så hårt den kan, och ändå blir bottlenecken.

Du kan testa att packa upp mha flera trådar i commandline versionen av 7zip med -mmt [antaltrådar],
tex "7z.exe e -mmt=18 c:\blah.7z", tror dock att det bara funkar på bzip2 komprimerade grejor så ymmv.

Permalänk
Medlem
Skrivet av flexm:

Att packa upp grejor är uppenbarligen inte helt straight forward att parallellisera så det kan ju vara så att din låga cpu användning är att pga det bara används en tråd för uppackning och en stackars core jobbar så hårt den kan, och ändå blir bottlenecken.

Du kan testa att packa upp mha flera trådar i commandline versionen av 7zip med -mmt [antaltrådar],
tex "7z.exe e -mmt=18 c:\blah.7z", tror dock att det bara funkar på bzip2 komprimerade grejor så ymmv.

Tack! Det är värt att testa!

Visa signatur

10900K @ 5.3GHz || Asus Maximus XII Hero || Custom Loop || EK-CoolStream RAD XE 360 + Alphacool Nexxos XT45 || EK Quantum Velocity CPU Block || EK FLT 360 D5 || Asus Strix RTX 3090 OC || 32GB g.skill Trident-Z CL16 @ 4000MHz || 1TB Samsung 970 EVO Plus - 1TB WD SN750 || Phanteks Enthoo Pro 2 || Seasonic Prime TX 1000W || Asus PG27VQ ||

Permalänk
Medlem
Skrivet av Printscreen:

Vid komprimering av filer kan du välja hur många trådar du ska använda, hur aggressiv komprimering (normal, fast, ultra etc) och word size. Detta lagras väl som meta-data i arkivet och sen vid upp-packning så gör datorn en "Best effort"?

Jo det går. Men jag skall decompressa dvs packa upp filer. Inte komprimera!

Visa signatur

10900K @ 5.3GHz || Asus Maximus XII Hero || Custom Loop || EK-CoolStream RAD XE 360 + Alphacool Nexxos XT45 || EK Quantum Velocity CPU Block || EK FLT 360 D5 || Asus Strix RTX 3090 OC || 32GB g.skill Trident-Z CL16 @ 4000MHz || 1TB Samsung 970 EVO Plus - 1TB WD SN750 || Phanteks Enthoo Pro 2 || Seasonic Prime TX 1000W || Asus PG27VQ ||

Permalänk
Keeper of the Bamse
Skrivet av roo:

Jo det går. Men jag skall decompressa dvs packa upp filer. Inte komprimera!

Ja precis, läste du mitt inlägg?

Visa signatur

i7 10770K, NH-D15. 16GB corsair. RTX 3080. 3TB nvme. Samsung G9. Fractal Torrent Compact. Corsair RM850.
Logitech G pro wireless mouse. Logitech TKL915 wireless. Logitech Pro X Wireless.
Macbook pro M1 (16GB, 512GB). HP Reverb G2.
www.bamseclockers.com

Permalänk
Medlem

att packa och packa upp är tungdrivet och parallellism ger oväntat låg förbättring då det är för många sekventiella delar som inte kan paralleliseras som tar upp tiden

en lista jag hittade

Algorithm Compressed size Compression Decompression lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s

gzip är fortfarande 'allround' och med pigz som kan köra gzip multicore vilket ger anständig fartökning med 4 kärnor vid kompression men mindre förbättring vid uppack.

lz4 är vanlig för filsystems-kompression vilket ofta görs i typisk 128K-block vilket gör att det kan delas upp mellan core och där är prio snabb uppackning

skall man packa maximalt så kostar det i kompressionsarbete och Googels brotli så är det väldigt asymmetrisk med prio på uppackhastighet och stor kostnad för kompression, och fungerar bäst för just texter...

Permalänk
Medlem
Skrivet av Printscreen:

Ja precis, läste du mitt inlägg?

Jag tog på glojärnen och läste en gång till. Om du kikar på svaret nu ovanför detta så tror jag bi hittat pudelns kärna.

Visa signatur

10900K @ 5.3GHz || Asus Maximus XII Hero || Custom Loop || EK-CoolStream RAD XE 360 + Alphacool Nexxos XT45 || EK Quantum Velocity CPU Block || EK FLT 360 D5 || Asus Strix RTX 3090 OC || 32GB g.skill Trident-Z CL16 @ 4000MHz || 1TB Samsung 970 EVO Plus - 1TB WD SN750 || Phanteks Enthoo Pro 2 || Seasonic Prime TX 1000W || Asus PG27VQ ||

Permalänk
Medlem
Skrivet av xxargs:

att packa och packa upp är tungdrivet och parallellism ger oväntat låg förbättring då det är för många sekventiella delar som inte kan paralleliseras som tar upp tiden

en lista jag hittade

Algorithm Compressed size Compression Decompression lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s

gzip är fortfarande 'allround' och med pigz som kan köra gzip multicore vilket ger anständig fartökning med 4 kärnor vid kompression men mindre förbättring vid uppack.

lz4 är vanlig för filsystems-kompression vilket ofta görs i typisk 128K-block vilket gör att det kan delas upp mellan core och där är prio snabb uppackning

skall man packa maximalt så kostar det i kompressionsarbete och Googels brotli så är det väldigt asymmetrisk med prio på uppackhastighet och stor kostnad för kompression, och fungerar bäst för just texter...

Spännande och tack för efterforskningar!

Tänkte man kan validera emot detta benchmark:

https://peazip.github.io/peazip-compression-benchmark.html

Visa signatur

10900K @ 5.3GHz || Asus Maximus XII Hero || Custom Loop || EK-CoolStream RAD XE 360 + Alphacool Nexxos XT45 || EK Quantum Velocity CPU Block || EK FLT 360 D5 || Asus Strix RTX 3090 OC || 32GB g.skill Trident-Z CL16 @ 4000MHz || 1TB Samsung 970 EVO Plus - 1TB WD SN750 || Phanteks Enthoo Pro 2 || Seasonic Prime TX 1000W || Asus PG27VQ ||