CentOS 6.5 x86-64上的Linux壓縮公用程式大比拼(1)

來源:互聯網
上載者:User

CentOS 6.5 x86-64上的Linux壓縮公用程式大比拼(1)

Bkjia精選譯文】今年,我想為各位讀者轉寄Gionatan Danti所寫的一篇饒有意思的文章,這篇文章最先發表於其個人部落格http://www.ilsistemista.net/,但願大家也與我一樣很喜歡這篇文章。

檔案壓縮是老把戲:最先能夠壓縮文章的軟體之一是“SQ”,其曆史可以追溯到上世紀80年代初期,而第一款廣泛使用、眾所周知的壓縮公用程式恐怕非1989年發布的ZIP莫屬。

換句話說,壓縮檔以節省儲存空間不是什麼新鮮事;雖然目前TB層級的低成本磁碟提供了龐大空間,但有時壓縮還是頗受歡迎,因為加密不僅縮減了儲存資料所需的空間,由於減少了寫入到儲存子系統或從儲存子系統讀取的資料量,甚至還能提升輸入/輸出效能。如果將越來越快的處理器速度與多少停滯不前的機械磁碟效能當然固態硬碟是另一碼事)相比較,更是如此。

雖然壓縮演算法和軟體各不一樣,但我們基本上可以分成兩大類:普通的無損壓縮公用程式和專門的有損壓縮公用程式。

後一類包括壓縮係數相當高的壓縮公用程式,只有當你想保護整個一般的資訊,你又沒有興趣想準確呈現未經處理資料的每個位元,才通常使用它們。換句話說,你可以使用有損壓縮公用程式,用來儲存高解析度照片或歌曲,而不是用來將壓縮後的可執行檔儲存到磁碟上可執行檔需要逐個位元地完美儲存),或者用來儲存文本記錄檔我們不想丟失文字檔方面的資訊,是吧?)。

所以,如果是一般的使用場合,無損壓縮公用程式是不二的選擇。但是面對那麼多可用的壓縮公用程式,該選擇哪個是好?有時候,不同的壓縮軟體使用同一種基本演算法,或者甚至同一種庫實現方法,於是到底使用哪一種壓縮公用程式是相對不大重要的選擇。不過,在比較使用不同壓縮演算法的壓縮公用程式時,選擇勢必是加權的選擇:你看重的是高壓縮比還是壓縮速度?換句話說,你是需要一種速度快、壓縮比低的演算法,還是一種速度快,但壓縮比高的演算法?

我們在本文中將介紹多款基於幾種不同壓縮庫的不同壓縮公用程式:

•lz4:一種新的高速壓縮軟體和演算法。

•lzop:基於快速的lzo庫,實現了LZO演算法。

•gzip和pigz多線程gzip):基於zip庫,實現了ZIP演算法。

•bzip2和pbzip2多線程bzip2):基於libbzip2庫,實現了Burrows–Wheeler壓縮方法。

•7-zip:主要但不是完全)基於LZMA演算法。

•xz:另一種基於LZMA的軟體。

軟體、實現、庫和演算法

在講解壓縮未經處理的未經處理資料之前,不妨先闡述一下相關術語。

無損壓縮演算法是一種數學演算法,它定義了如何將特定的資料集縮減壓縮)成比較小的資料集,但又不丟失資訊。換句話說,它需要使用比原始版本更少的位元編碼資訊,但又不丟失資訊。要想做到有用,壓縮演算法必須是可逆的――它應該讓我們能夠還原壓縮後的資料集,獲得原始來源資料集的完全重複項。不難看到準系統壓縮、壓縮比和壓縮速度)如何根源於演算法本身,而不同演算法的壓縮結果和適應範圍大不一樣。

下一步就是演算法實現――簡而言之,用來表示壓縮演算法的數學行為的實際代碼。這是另一個關鍵的步驟:比如說,向量化代碼或多線程代碼的速度比普通的單線程代碼要快得多。

如果某種代碼實現被認為足夠好,它常常以一種獨立的方式來封包化,形成壓縮庫。以一種獨立的庫來分化演算法實現的優點在於,你可以編寫好多不同的壓縮軟體,而不需要多次重新實現基本的演算法。

最後,我們有了壓縮軟體本身。壓縮軟體提供了命令列介面CLI)或圖形化使用者介面GUI),把使用者和壓縮庫“結合”起來。

有時候,演算法、庫和程式有同一個名稱比如:zip)。而有時候,我們沒有獨立的庫,但它完全是在壓縮軟體裡面編製的。雖然這有點讓人混淆,但上述內容仍然適用。

總而言之,我們的基準測試將涵蓋演算法、庫和軟體,如下所示:

 

測試平台和方法

基準測試在搭載如下配置的系統上進行:

•PhenomII 940處理器四核@ 3.0 GHz,1.8 GHz北橋和6 MB三級緩衝)

•8 GB DDR2-800 DRAM雙通道記憶體模式)

•華碩M4A78 Pro主板採用AMD 780G + SB700晶片集)

•4隻500 GB硬碟1隻西部資料綠盤,3隻希捷魚子醬),4隻硬碟採用進階主機控制器介面AHCI)模式,配置方式採用了軟體RAID 10“near”布局。

•作業系統CentOS 6.5 x64

我對兩種不同資料集的壓縮和解壓縮進行了計時:

1.含有未經壓縮的CentOS 6.5 最小安裝/root)映像/boot不包括在內)的tar檔案

2.含有Linux 3.14.1穩定核心的tar檔案

為了避免磁碟子系統帶來的任何影響,我將兩個資料集都移到了使用記憶體作為備份存放區器的/dev/shm目錄你可以將它視作記憶體虛擬盤)。

如果可能,我盡量將單線程結果與多線程結果分開來。不過,7-zip似乎沒有線程選擇選項;預設情況下,處理器提供多少硬體執行緒,它就能產生多少線程。於是,我用星號*)來標記7-zip的結果。

許多壓縮公用程式可以進行某種調優――比如說,選擇“-1”通常意味著比“-9”更快但效果較差)的壓縮。我還在適用的地方試用了這些標記。

壓縮CentOS 6.5根映像檔案

不妨先壓縮主要含有大量可執行檔的資料集:最小的CentOS 6.5根映像檔案來開始我們的分析。可執行檔和二進位檔案常常可以縮減,儘管壓縮低有點偏低。

 

如你所見,無論是壓縮還是解壓縮,lz4和lzop都兌現了速度很快這一承諾――不過lz4是絕對的贏家。另一方面,它們的壓縮係數比較低。不過,要求它們提高壓縮比通過“-9”參數選項符),它們的速度就會大幅慢下來,並不產生明顯更小的檔案。

Gzip、尤其是bzip2的表現不是很好;雖然它們的壓縮系列更高3X),但它們存在效能嚴重下降的不足。

7-zip和xz都有非常慢的壓縮速度,但有著很高的壓縮比和尚可接受的解壓縮速度。

切記:這些是單線程結果。可以使用一些多線程壓縮軟體,讓擁有多核的現代處理器充分利用起來:

 

壓縮縮放:

 

Pigz、pbzip2和pxz得到的結果都遠勝於它們的單線程結果。不過,雖然壓縮縮放常常非常好,但只有pbzip2也能夠解壓縮加快。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.