我应该依赖 lbzip2 还是 pbzip2?

Bas*_*ing 10 multi-core bzip2

由于 bzip2 声称压缩效果最好(在大小上),我决定使用它。工作服务器可以提供 24 个(虚拟)CPU(4 个真正的 X5650 @ 2.67GHz)——因此我决定寻找并行变体。
使用debian stable- 抱歉,但我在 askubuntu 中找到了最佳匹配 - 我决定仔细查看pbzip2lbzip2
但是选择什么?实际上, stablepbzip2是 version1.1.1-1lbzip2version 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  
Run Code Online (Sandbox Code Playgroud)

使用 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
Run Code Online (Sandbox Code Playgroud)

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

lac*_*cos 11

这是如何评估它们的基本思想。

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

然后迭代所有三个输出文件(即 bzip2、pbzip2、lbzip2 的压缩输出),并使用所有三个实用程序(bzip2、pbzip2 和 lbzip2)解压缩每个文件。这会给你更多的九次。

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

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

我用的是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
Run Code Online (Sandbox Code Playgroud)


小智 6

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