我应该依赖 lbzip2 还是 pbzip2?

我应该依赖 lbzip2 还是 pbzip2?

由于 bzip2 声称压缩效果最好(就大小而言),我决定使用它。工作服务器可以提供 24 个(虚拟)CPU(4 个真正的 X5650 @ 2.67GHz)- 因此我决定寻找并行变体。
使用debian stable- 抱歉,但我在 askubuntu 中找到了最佳匹配 - 我决定仔细研究pbzip2lbzip2
但该选择什么?实际稳定版本pbzip2是 版本1.1.1-1lbzip2版本0.23-1。这可能在外观上倾向于pbzip2- 但lbzip2据说它甚至在单核计算机上也更快。另一方面pbzip2声称与 完全兼容bzip2 v1.0.2
此外,我有一些大型本地作业的计时值:
使用lbzip2

Command being timed: "tar -cjf /tmp/mapleTAsicherung.lbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
    User time (seconds): 2134.32
    System time (seconds): 39.24
    Percent of CPU this job got: 2099%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 1:43.51
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 1509088
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 1054467
    Voluntary context switches: 153901
    Involuntary context switches: 235285
    Swaps: 0
    File system inputs: 0
    File system outputs: 3460632
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0  

使用pbzip2

    Command being timed: "tar -cjf /tmp/mapleTAsicherung.pbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
    User time (seconds): 3158.18
    System time (seconds): 59.80
    Percent of CPU this job got: 2095%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 2:33.56
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 1436320
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 477683
    Voluntary context switches: 151326
    Involuntary context switches: 339246
    Swaps: 0
    File system inputs: 0
    File system outputs: 3460536
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

应该使用什么?主要区别是什么?目前我倾向于lbzip2

答案1

这是评估它们的基本思路。

拿一个你通常使用的大型 tarball。使用 bzip2、pbzip2、lbzip2 压缩它。测量(挂钟)时间并将所有输出保存在不同的文件中。这将为您提供三个时间和三个文件大小。

然后遍历所有三个输出文件(即 bzip2、pbzip2、lbzip2 的压缩输出),并使用这三个实用程序(bzip2、pbzip2 和 lbzip2)对每个文件进行解压缩。这将为您带来进一步的九次。

在某个分析器下重新运行这 12 个测试,并获取每个测试的峰值内存使用率(虚拟和 RSS)。同样,这将产生 12 个值。(如果您的 Linux 配置为无过度使用,那么您对 ​​VSZ 感兴趣。否则您关心 RSS)。

为这些数据点制作一个包含 12 行的表格 - col1:3 个压缩大小,col2:3 个压缩时间/9 个解压时间,col3:12 个峰值 mems - 并选择最适合您的。您应该考虑压缩频率与解压频率。

我使用 lbzip2-0.23,但是我编写了它,所以它不算数。

最后,无论哪一个对你来说是最好的,总是保存校验和未压缩tarball,并在宣布备份“完成”之前验证您保存的文件。

FILES=...
OUTDIR=/mnt/archive
BZ2_UTIL=...

(
  tar -c -- $FILES \
  | tee >(sha256sum >"$OUTDIR"/myfiles.tar.sha256) \
  | pv -c -N plain 2>/dev/tty \
  | "$BZ2_UTIL" \
  | pv -c -N compr 2>/dev/tty \
  > "$OUTDIR"/myfiles.tar.bz2
) 2>"$OUTDIR"/myfiles.err

"$BZ2_UTIL" -dc -- "$OUTDIR"/myfiles.tar.bz2 \
| sha256sum -c -- "$OUTDIR"/myfiles.tar.sha256

答案2

我对 bzip2、pbzip2、lbzip2 以及 lzip 和 plzip 进行了一些比较基准测试,http://vbtechsupport.com/1614/。只要你有足够的内存,我很喜欢 lbzip2 的速度改进。

相关内容