(Saya memposting ini pertama kali di serverfault, tapi kemudian saya menyadari itu mungkin milik sini.)
Saya mencoba mengompres file teks yang sangat besar menggunakan 7za (p7zip) 9.20. Opsi -mmt tampaknya tidak memiliki efek apa pun. Saya sudah mencoba keduanya -mmt = pada dan -mmt = 2. Ini adalah mesin 8-core. Satu orang menyarankan menambahkan -m0 = lzma2 sebagai argumen, tapi itu hanya memberi saya E_INVALIDARG. Adakah yang tahu cara membuat ini bekerja?
Ini tidak berpengaruh:
7za a -mx=9 -mmt=2 -p myarchive.zip bigfile.txt
Dan ini gagal dengan kesalahan:
7za a -m0=lzma2 -mx=9 -mmt=2 -p myarchive.zip bigfile.txt
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)
Scanning
Creating archive release_20120601-1-http.zip
System error:
E_INVALIDARG
linux
compression
7-zip
Brian L
sumber
sumber
-mmt
, tidak-mmt=2
. Saya juga percaya sintaksis yang tepat adalah-mx9
, meskipun keduanya mungkin bekerja.Jawaban:
Menurut beralih -m (Atur Metode kompresi) # ZipMultiThread - manual & dokumentasi 7ZIP ,
mt
standarnya adalahon
, jadi tidak perlu menentukannya sama sekali.Namun, implementasi algoritma DEFLATE 7zip tidak mendukung multi-threading!
Seperti yang telah Anda temukan,
hanya menggunakan satu inti.
Tetapi
.zip
file mengkompres setiap file secara individual. Saat mengompresi beberapa file, opsi multi-threading memampatkan satu file per inti sekaligus.Cobalah dan Anda akan melihatnya
akan menggunakan semua
N
core yang tersedia .Jika Anda ingin mempercepat kompresi satu file, Anda memiliki dua pilihan:
Berpisah menjadi beberapa bagian
bigfile
.Gunakan algoritma kompresi yang berbeda.
Sebagai contoh, implementasi 7zip pada algoritma BZip2 mendukung multi-threading.
Sintaksnya adalah:
Juga, kesalahan sintaksis disebabkan oleh upaya Anda untuk menggunakan Algoritma LZM untuk sebuah
.zip
wadah. Itu tidak mungkin.Algoritma yang mungkin untuk
.zip
conatiners adalah DEFLATE (64), BZip2 dan tidak ada kompresi.Jika Anda ingin menggunakan Algoritma LZM, gunakan
.7z
wadah. Wadah ini juga menangani algoritme berikut: PPMd, BZip2, DEFLATE, BCJ, BCJ2, dan tanpa kompresi.sumber
.zip
wadah..ZIP
wadah.Ini adalah pertanyaan lama, dan bukan jawaban untuk pertanyaan spesifik, tetapi jawaban untuk semangat pertanyaan (Menggunakan semua core untuk mengompres format zip)
pigz (gzip paralel dengan opsi .zip)
Ini akan memberi Anda file yang kompatibel dengan zip 7x lebih cepat untuk level kompresi yang sama.
Komparasi cepat dari kompres zip yang kompatibel dan non-zip menggunakan inti tunggal dan ganda.
waktu dinding pada i7-2600k untuk mengkompres file txt 1.0gb pada fedora 20
waktu dinding untuk dekompresi
sumber
Cukup gunakan -mmt [N + 1]
Sebagai contoh: -mmt2 untuk satu utas, -mmt9 untuk delapan utas
sumber
Diverifikasi dan diuji: Untuk menggunakan multithreading pada 7za parameternya harus "-mmt #" bukan "-mmt = #", menempatkan tanda sama dengan membuatnya diabaikan.
Bagaimana saya menemukan? Setelah saya menjalankan 7z tanpa parameter apa pun itu menunjukkan info tentang parameter, pada sakelar itu tertulis "-mmt [N]", bukan "-mmt = [N]"
Jadi jika saya mengerti dengan baik, parameter yang Anda ketikkan "-mmt = 2" mungkin salah tulis dan mungkin "-mmt2", tanpa tanda sama dengan.
Tidak yakin jika saya mengerti dengan baik, bahasa Inggris saya sangat buruk.
Omong-omong, mengapa Anda menggunakan "7za" bukan hanya "7z"?
Jadi untuk menguji parameter saya menjalankan seperangkat perintah untuk melakukan benchmark dan itu mengkonfirmasi kesalahan ketik pada beberapa dokumentasi. Parameter yang benar harus diketik tanpa tanda sama dengan.
Perintah untuk melakukan benchmark dengan 7z dengan hanya satu utas: 7z b -mmt1
Perintah untuk melakukan benchmark dengan 7z dengan hanya dua utas: 7z b -mmt2
Perintah untuk melakukan benchmark dengan 7za hanya dengan dua utas: 7za b -mmt2
Perintah untuk melakukan benchmark dengan 7za hanya dengan satu utas: 7za b -mmt1
Tidak ada tanda sama pada parameter ˋ-mmt # ˋ, baik untuk 7z, maupun 7za.
sumber