我应该依靠lbzip2或pbzip2?


10

由于bzip2声称可以最佳压缩(大小),因此我决定使用它。正常工作的服务器可以提供24个(虚拟)CPU(4个真正的X5650 @ 2.67GHz)-因此,我决定寻找并行版本。
使用debian stable-很抱歉,但是我在askubuntu找到了最好的匹配-我决定仔细看一下pbzip2lbzip2
但是要选择什么呢?在实际中,稳定pbzip2版本在1.1.1-1lbzip20.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
快速说明:使用pbzip2解压缩后,使用常规 bzip2 压缩的文件不会提高性能。但是pbzip2存档了向后兼容的文件-可以使用单线程或并行化实用程序对其进行解压缩。
STW

Answers:


11

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

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

然后遍历所有三个输出文件(即bzip2,pbzip2,lbzip2的压缩输出),并使用所有三个实用程序(bzip2,pbzip2和lbzip2)解压缩每个文件。这将再给您九次。

在某个事件探查器下重新运行十二个测试,并为每个测试获得峰值内存使用情况(虚拟和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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.