对一个1G的日志文件进行压缩,整个压缩期间gzip和bzip2都能将1个核利用到100%。

首先将该日志文件读入页面缓存: 可以cat该文件也可以用vmtouch -t来实现

先检查该文件已经在page cache中

[root@er01 ~]# vmtouch /serverInfo_2019-02-11_7.log
           Files: 1
     Directories: 0
  Resident Pages: 262145/262145  1G/1G  100%
         Elapsed: 0.044465 seconds

默认压缩比 -6

[root@er01 ~]# time gzip -c -6 /serverInfo_2019-02-11_7.log > /tmp/1.gz

real    0m32.167s
user    0m31.267s
sys 0m0.691s
[root@er01 ~]# time bzip2 -c -6 /serverInfo_2019-02-11_7.log > /tmp/1.bz

real    2m11.389s
user    2m10.667s
sys 0m0.697s

检查压缩比

[root@er01 ~]$ ll -h /tmp/1*
-rw-rw-r-- 1 root root 190M Mar 11 11:27 /tmp/1.bz
-rw-rw-r-- 1 root root 244M Mar 11 11:29 /tmp/1.gz

最慢压缩(压缩比-9)

[root@er01 ~]# time gzip -c -9 /serverInfo_2019-02-11_7.log > /tmp/1.gz

real    1m7.961s
user    1m7.119s
sys 0m0.739s
[root@er01 ~]# time bzip2 -c -9 /serverInfo_2019-02-11_7.log > /tmp/1.bz

real    2m23.701s
user    2m23.016s
sys 0m0.675s

检查压缩比

[root@er01 ~]$ ll -h /tmp/1*
-rw-rw-r-- 1 root root 182M Mar 11 11:27 /tmp/1.bz
-rw-rw-r-- 1 root root 240M Mar 11 11:29 /tmp/1.gz

最快压缩(压缩比-1)

[root@er01 ~]# time gzip -c -1 /serverInfo_2019-02-11_7.log > /tmp/1.gz

real    0m16.090s
user    0m15.403s
sys 0m0.672s
[root@er01 ~]# time bzip2 -c -1 /serverInfo_2019-02-11_7.log > /tmp/1.bz

real    1m48.986s
user    1m48.012s
sys 0m0.878s

检查压缩比

[root@er01 ~]$ ll -h /tmp/1*
-rw-rw-r-- 1 root root 234M Mar 11 11:27 /tmp/1.bz
-rw-rw-r-- 1 root root 297M Mar 11 11:29 /tmp/1.gz

结论

  1. 一般情况下,默认压缩比和最佳压缩比(-6和-9):没必要为了增加那一点点的压缩比(1G的原文本文件最终只差了几兆)而增加非常明显(甚至翻倍)的压缩/解压缩时间
  2. 默认压缩比和最小压缩比(耗时最短)之间:如果能容忍低一点的压缩比(1G原文本文件最终差4 5十兆)同时注重耗时的话(压缩/解压缩耗时能大幅下降甚至下降一半),可以选择最地的压缩比来获得最高的处理效率
  3. bzip的压缩比在同等级别下都要略高于gzip,但是耗时却明显的高于gzip(基本2倍上下)
  4. 不同的压缩比下,gzip的耗时敏感度要高于bzip,即不同压缩比下,gzip耗时的增减幅度要大于bzip(但都远小于bzip)