LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 聚焦深空

gzip bzip2 lzma xz 7z 讨论(xz 推荐贴)

[复制链接]
发表于 2009-7-25 18:52:20 | 显示全部楼层
这麽久了,xz 还是停留在 4.999.8-beta,不是说快出稳定版了吗?
回复 支持 反对

使用道具 举报

发表于 2009-7-25 22:02:21 | 显示全部楼层
用来做包压缩的话除了压缩率与速度外,大量应用情况下的还原可靠性很关键,不清楚几种广泛使用的压缩格式是否有具体的高强度测试数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-25 22:18:57 | 显示全部楼层
Post by d00m3d;2009558
这麽久了,xz 还是停留在 4.999.8-beta,不是说快出稳定版了吗?

是挺奇怪,再耐心等等。
Post by linux001;2009602
用来做包压缩的话除了压缩率与速度外,大量应用情况下的还原可靠性很关键,不清楚几种广泛使用的压缩格式是否有具体的高强度测试数据。

兄台多虑,真像您说的这样那么不可靠,压缩算法设计很失败,没人用的。
您该担心存储介质失效、EMP、宇宙射线多些。
回复 支持 反对

使用道具 举报

发表于 2009-7-26 15:13:13 | 显示全部楼层
坚持gz&bz2的飘过……
centos啥时候支持偶就转向~
回复 支持 反对

使用道具 举报

发表于 2009-8-15 13:26:58 | 显示全部楼层
Post by d00m3d;2008205
以往内核映像都是以 bzip2 压缩的,更旧的内核则采用 gzip,现在新内核新支援了 lzma 方式,今天试验了一下,在使用完全相同的 config 下得出来的结果如下:
  1. d00m3d@BlackMesa:~$ cd /boot
  2. d00m3d@BlackMesa:/boot$ ll
  3. total 12881
  4. -rw-rw-r-- 1 root root  932596 Dec 19  2008 System.map-2.6.28-rc9
  5. -rw-r--r-- 1 root root 1231585 Feb 21 15:21 System.map-2.6.28.7
  6. -rw-rw-r-- 1 root root  981943 Jul 21 09:29 System.map-2.6.30.2
  7. -rw-r--r-- 1 root root 2510080 Feb 21 15:21 clfskernel-2.6.28.7
  8. -rw-rw-r-- 1 root root   54701 Dec 19  2008 config-2.6.28-rc9
  9. -rw-r--r-- 1 root root   52457 Feb 21 15:21 config-2.6.28.7
  10. -rw-rw-r-- 1 root root   56734 Jul 21 09:29 config-2.6.30.2
  11. drwxr-xr-x 2 root root    1024 Jan 17  2009 grub
  12. -rw-rw-r-- 1 root root 2573296 Dec 19  2008 lfskernel-2.6.28-rc9
  13. -rw-rw-r-- 1 root root [color="Red"]2535120 [/color]Jul 21 09:30 [color="Red"]lfskernel-2.6.30.2[/color]
  14. -rw-rw-r-- 1 root root [color="Red"]2181120 [/color]Jul 21 12:09 [color="Red"]lfskernel-lzma-2.6.30.2[/color]
  15. drwx------ 2 root root   12288 Jan 17  2009 lost+found
  16. d00m3d@BlackMesa:/boot$ cat /proc/version
  17. Linux version 2.6.30.2 (d00m3d@BlackMesa) (gcc version 4.4.1 20090707 (prerelease) (GCC) ) #1 SMP PREEMPT Tue Jul 21 11:57:37 HKT 2009
  18. d00m3d@BlackMesa:/boot$
复制代码


采用 lzma 方式的内核映像会细一点,这是常识。其实我原意是想比较启动速度的区别,我的理论是:

[color="Blue"]1. 内核解压应该是内核本身支援的,因为系统起动时根分区尚未挂载,不可能调用系统的解压软件来解压内核自身的映像文件(我没有查看内核源码,应该没有猜错吧?)

2. lzma 解压速度比 bzip2 快,如果内核本身能解压,那麽起动的时间应能缩短,反正加载到内存後运行上是没有区别的

可是不论是 bzip2 还是 lzma,解压速度实在太快了,无法实时测得,我的系统没有 bootchart,哪位兄弟可以帮忙证实一下?

若然属实,那麽在编译内核时选用 lzma,既能将内核映像缩细,又能将起动时间减少,代价只不过是编译(压缩)时间长一点点而矣,何乐而不为之?

刚查了一下,解压程序的确是内核源码树里内置了
  1. d00m3d@BlackMesa:~/BLFS-sources/linux-2.6.30$ find ./ -iname '*lzma*'
  2. ./lib/decompress_unlzma.c
  3. ./include/linux/decompress/unlzma.h
  4. ./usr/initramfs_data.lzma.S
  5. d00m3d@BlackMesa:~/BLFS-sources/linux-2.6.30$
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-3 20:11:39 | 显示全部楼层
xz utils 4.999.9beta 2009-08-27 释出,官网上说是最后一个 beta 版本。
回复 支持 反对

使用道具 举报

发表于 2009-9-3 20:25:56 | 显示全部楼层
昨天換了,只發現用 lzma 或 xz -9 來壓縮時系統自動改變 dictionary size 來調節內存的使用量,好像實質沒多大變化
回复 支持 反对

使用道具 举报

发表于 2009-9-5 18:21:17 | 显示全部楼层
Post by 聚焦深空;2009608
是挺奇怪,再耐心等等。



兄台多虑,真像您说的这样那么不可靠,压缩算法设计很失败,没人用的。
您该担心存储介质失效、EMP、宇宙射线多些。




最主要是担心CPU问题.:Angel:
回复 支持 反对

使用道具 举报

发表于 2009-9-5 20:17:33 | 显示全部楼层
受教.

sword@OPSvr ~ $tar --help
用法: tar [选项...] [FILE]...
GNU ‘tar’
将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。

示例
  tar -cf archive.tar foo bar  # 从文件 foo 和 bar 创建归档文件 archive.tar。
  tar -tvf archive.tar         # 详细列举归档文件 archive.tar 中的所有文件。
  tar -xf archive.tar          # 展开归档文件 archive.tar 中的所有文件。

....
压缩选项:

  -a, --auto-compress        使用归档后缀来决定压缩程序
  -I, --use-compress-program=PROG
                             通过 PROG 过滤(必须是能接受 -d 选项的程序)
  -j, --bzip2                通过 bzip2 过滤归档
      --lzma                 通过 lzma 过滤归档
      --no-auto-compress     do not use archive suffix to determine the
                             compression program
  -z, --gzip, --gunzip, --ungzip   通过 gzip 过滤归档
  -Z, --compress, --uncompress   通过 compress 过滤归档

  -J, --xz                   filter the archive through xz
      --lzop                 通过 lzop 过滤归档


---------------------------------------------------
以后, -a 选项看来我是可以代替-j了

测试结果:
sword@OPSvr ~ $time tar caf celestia-1.6.0.tar.lzma celestia-1.6.0

real        2m59.319s
user        2m49.143s
sys        0m0.480s

sword@OPSvr ~ $ls -lh celestia-1.6.0.tar.lzma
-rw-r--r-- 1 sword sword 41M 09-05 20:11 celestia-1.6.0.tar.lzma

sword@OPSvr ~ $time tar xaf celestia-1.6.0.tar.lzma

real        0m7.170s
user        0m6.428s
sys        0m0.476s

sword@OPSvr ~ $time tar caf celestia-1.6.0.tar.bz2 celestia-1.6.0

real        0m52.872s
user        0m49.171s
sys        0m0.224s

sword@OPSvr ~ $ls -lh celestia-1.6.0.tar.*
-rw-r--r-- 1 sword sword 48M 09-05 20:14 celestia-1.6.0.tar.bz2
-rw-r--r-- 1 sword sword 41M 09-05 20:11 celestia-1.6.0.tar.lzma
sword@OPSvr ~ $time tar xaf celestia-1.6.0.tar.bz2

real        0m13.002s
user        0m12.137s
sys        0m0.280s


没有考虑Cache的因素.

我在做这些操作的时候, 从conky里的diskiograph里看... 磁盘好像没什么动作..
cache 好厉害
回复 支持 反对

使用道具 举报

发表于 2009-9-6 12:53:22 | 显示全部楼层
习惯用 -9 来进行压缩,如果用 -a,那麽压缩程度是多少了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表