1. 程式人生 > >系統技術非業餘研究 » 推介xz高壓縮率演算法

系統技術非業餘研究 » 推介xz高壓縮率演算法

這幾天看到Linux核心2.6.38釋出的release說明裡面提到:

The version .38 kernel comes with a library for decompressing XZ, a format developed from LZMA and known for its high levels of compression. This library is the basis not only for SquashFS, which now also offers XZ, but also for code that allows the kernel to unpack any parts of itself and of the initial ram disks (initrds) that were compressed with XZ.

覺得比較好奇, Linux下有那麼多的壓縮演算法, 為什麼要用這個, 它有什麼過人之處? 今天深入瞭解了下xz, 順便作了簡單的benchmark體驗了下.

官方網站在這裡

#我的機器配置
$ summary 
...
# Aspersa System Summary Report ##############################
        Date | 2011-03-17 10:24:13 UTC (local TZ: CST +0800)
    Hostname | yufeng-laptop
      Uptime |  1:46,  5 users,  load average: 0.97, 1.03, 0.84
      System | Dell Inc.; Latitude E6400; vNot Specified (Portable)
 Service Tag | 9MKDW2X
      Release | Ubuntu 10.10
      Kernel | 2.6.38-yufeng
Architecture | CPU = 64-bit, OS = 64-bit
   Threading | NPTL 2.12.1
    Compiler | GNU CC version 4.4.5.
     SELinux | No SELinux detected
# Processor ##################################################
  Processors | physical = 1, cores = 2, virtual = 2, hyperthreading = no
      Speeds | 2x2535.000
      Models | 2xIntel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz
      Caches | 2x3072 KB
# Memory #####################################################
       Total | 1.95G
        Free | 16.70M
        Used | physical = 1.93G, swap = 4.42M, virtual = 1.94G
     Buffers | 51.30M
      Caches | 1001.72M
        Used | 1.09G
...
#安裝壓縮軟體
$ apt-get install xz-utils bzip2 lzop

#準備資料
$ tar cf 1.tar linux-2.6.38 && cp 1.tar 2.tar && cp 1.tar 3.tar
$ ll 1.tar 2.tar 3.tar
-rw-r--r-- 1 yufeng yufeng 440494080 2011-03-17 18:17 1.tar
-rw-r--r-- 1 yufeng yufeng 440494080 2011-03-17 18:17 2.tar
-rw-r--r-- 1 yufeng yufeng 440494080 2011-03-17 18:17 3.tar
#開壓
$ time xz 1.tar 

real	5m4.269s
user	5m1.670s
sys	0m1.340s

$ time bzip2 2.tar

real	1m3.357s
user	1m1.490s
sys	0m0.610s

$ time lzop 3.tar

real	0m5.526s
user	0m3.550s
sys	0m0.490s

#看壓縮結果
$ ll 1.tar.xz 2.tar.bz2 3.tar.lzo
-rw-r--r-- 1 yufeng yufeng  65092368 2011-03-17 18:18 1.tar.xz
-rw-r--r-- 1 yufeng yufeng  76103454 2011-03-17 18:19 2.tar.bz2
-rw-r--r-- 1 yufeng yufeng 151462273 2011-03-17 18:17 3.tar.lzo

#解壓還原
$ time xz -d 1.tar.xz 

real	0m8.507s
user	0m6.390s
sys	0m0.670s

$ time bzip2 -d 2.tar.bz2 

real	0m19.019s
user	0m17.420s
sys	0m0.670s

$ time lzop -d 3.tar.lzo 

real	0m6.261s
user	0m1.610s
sys	0m0.610s

從上面的資料我們可以看出, xz的壓縮率確實不錯,解壓速度也飛快,就是壓縮比較慢,但是我們大部分的需求是讀,所以無所謂,一輩子壓不了幾次.

推薦在專案中使用,Linux都用了,我們怕啥!

玩的開心!

PS.
劉曉東 同學說:

剛剛在網上看到了一個XZ的並行版本pxz(http://jnovy.fedorapeople.org/pxz/),當然它的目的是為了加快xz的壓縮速度同時儘量小的改變xz原來的高壓縮率。

Post Footer automatically generated by wp-posturl plugin for wordpress.

No related posts.

相關推薦

系統技術業餘研究 » 推介xz壓縮演算法

這幾天看到Linux核心2.6.38釋出的release說明裡面提到: The version .38 kernel comes with a library for decompressing XZ, a format developed from LZMA and known for its

系統技術業餘研究 » ETS新的壓縮特性

即將釋出的R14B01要支援ets的壓縮,更大程度的提高記憶體的利用率。 在github上可以看到這個分支,有興趣的同學可以下載下來看看。 壓縮的時候只壓縮value, key是不壓縮的。 value特別簡單型別的eterm也是不壓縮的,因為zip壓縮需要一定長度的內容,而且壓縮本身也要加入一點的

系統技術業餘研究 » 強度的port(Pipe)的效能測試

在我的專案裡面, 很多運算logic是由外部的程式來計算的 那麼訊息先透過pipe發到外部程式,外部程式讀到訊息, 處理訊息, 寫訊息, erlang程式讀到訊息, 這條鏈路很長,而且涉及到pipe讀寫,上下文切換,這個開銷是很大的.但是具體是多少呢? 我設計了個這樣的ring. 每個ring有

系統技術業餘研究

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » MySQL資料庫架構的演化觀察

MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql

系統技術業餘研究 » inet_dist_connect_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 推薦工作機會

最後更新時間:2014/11/28 請賜簡歷至:[email protected], 感謝您對加入我們公司有興趣,我們希望能早日和您共事。 以下幾個職位1年內有效,歡迎內部轉崗:
 資深資料工程師 公司:阿里(核心系統資料庫組) 工作地點:杭州(西溪園區) 崗位描述: 分析雲服務產生的海

系統技術業餘研究 » 新的工作和研究方向

和大家更新下: 做了將近8年資料庫後,我的工作和研究方向將會延伸到虛擬化和計算相關的雲服務,希望能夠和大家一起進步,Happy New Year! 預祝大家玩得開心! Post Footer automatically generated by wp-posturl plugin for w

系統技術業餘研究 » 叢集引入inet_dist_{listen,connect}_options更精細引數微調

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 2017升的最快的幾個資料庫無責任點評

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » Erlang 17.5引入+hpds命令列控制程序預設字典大小

Erlang 17.5釋出引入控制程序預設字典大小的命令列引數: Erlang/OTP 17.5 has been released Written by Henrik, 01 Apr 2015 Some highlights of the release are: ERTS: Added co

系統技術業餘研究 » inet_dist_listen_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 老生常談: ulimit問題及其影響

ulimit最初設計是用來限制程序對資源的使用情況的,因為早期的系統系統資源包括記憶體,CPU都是非常有限的,系統要保持公平,就要限制大家的使用,以達到一個相對公平的環境。以下是典型的機器預設的限制情況: $ ulimit -a core file size (blocks,

系統技術業餘研究 » 求賢帖

原創文章,轉載請註明: 轉載自系統技術非業餘研究 本文連結地址: 求賢帖 作為一個優秀的工程師,你其實不缺少才華,你缺少的是神一樣的隊友、充滿挑戰的世界級技術難題,和一個可以施展自己才華的大舞臺。加入阿里核心系統資料庫開發團隊吧,你缺的這裡都有。來吧,戳這裡,給我們見識你的機會:http://b

系統技術業餘研究 » Erlang R16B03釋出,R17已發力

Erlang R16B03釋出了,通常03版本是bug fix版本,進入生產版本,官方的說明如下: OTP R16B03 is a service release with mostly a number of small corrections and user contributions. B

系統技術業餘研究 » Erlang R13B04 Installation

R13B04後erlang的原始碼編譯為了考慮移植性,就改變了編譯方式,以下是官方wiki上的安裝文件: 1. Cloning Here are the basic steps to build Erlang/OTP in the Git repository. Start by cloning:

系統技術業餘研究 » Understanding Linux CPU Load 資料彙總

最近關注線上CPU load的人挺多,很多人覺得load太高系統就有問題,就想各種辦法來折騰。其實在我看來load只是系統CPU執行佇列的在執行程序數的近似值, 如下圖: 對於Unix發展的初期,機器的效能比較差,CPU核數也少,參考意義比較大。現在的機器都是非常強悍的,CPU,記憶體,IO各個

系統技術業餘研究 » Erlang R15的記憶體delayed dealloc特性對訊息密集型程式的影響

在新的NUMA體系結構下,每個CPU都有自己的本地記憶體,如果要訪問其他CPU的記憶體,那算remote了,要走CPU之間的QPI通道,通常這樣速度會有40%的下降。 那麼對於多執行緒的程式來講,這個硬體的變化對軟體也有很大的影響。在多執行緒程式裡面,通常一個執行緒會為一個物件分配記憶體,然後把這

系統技術業餘研究 » Erlang R17新特性淺評

Erlang R17RC2 原始碼已經就緒, 參見 這裡 後續版本的釋出時間,官方的時間安排參見 這裡,摘抄如下: Preliminary dates for the upcoming release: Release: erts, emu,comp |Code stop

系統技術業餘研究 » Erlang R16支援帶顏色的控制檯

Erlang通過fix tty驅動的過濾,在R16版本支援帶顏色的控制檯,這個特性在我們做各種監控工具高亮非常有幫助,參見R16的Readme: Support ANSI in console Unix platforms will no longer filter control sequenc