美文网首页Linux小推车🍊码农生信linux
生信小工具之:并行解压神器pigz

生信小工具之:并行解压神器pigz

作者: lakeseafly | 来源:发表于2019-03-13 18:04 被阅读17次

做生物信息的同学会相信你们都会遇到这样的情况:你会遇到成白或者上千的sequencing data,然后你需要解压它/或者将你一系列的结果进行压缩,然后你使用你熟悉的gunzip或者gzip,将你所需要解压或者压缩的文件一个一个压缩,这样会耗费很多的时间,效率并不高。

这次推送给大家带来一个并行解压的神器pigz。简单来说,由Mark Adler编写的pigz基本上就是并行gzip,可以有效的提高解压或者压缩的速度。默认情况下,它使用与你的处理器所拥有的相同数量的线程进行压缩。

那问题来了,它有多快?我使用pigz和gzip测试了一些较小文件(8G未压缩)和一个大(70G未压缩)文件的压缩和解压缩步骤。然后,这些步骤都是在我的服务器中完成的,具有96个内核和1TB RAM的服务器上完成的(不同配置测出的数据会有所不同)。

安装pigz

# 下载pigz的安装包
wget https://zlib.net/pigz/pigz-2.4.tar.gz

# 解压 pigz
tar -xzvf pigz-2.3.4.tar.gz

# 安装 pigz
cd pigz-2.3.4
make

# 将其路径加到环境变量中( ~/.bashrc) 中,使我们可以全局调用这个工具,然后source刷新一下
# export PATH=$HOME/bin/pigz-2.4:$PATH
source ~/.bashrc

压缩八个比较小的文件

每个文件的大小大概为8.7到8.8G

# 使用 gzip
time gzip /RAW/Lappan/shotgun_raw/original_data/808*

real    128m17.322s
user    127m15.664s
sys     0m53.892s

# 使用 pigz
time pigz /RAW/Lappan/shotgun_raw/original_data/808*

real    3m17.983s
user    132m10.900s
sys     1m38.176s

这里预防你不清楚real,user,sys三者的区别,简单解析一下:

  • real :从运行开始到结束的时间。这是所有经过的时间,包括其他进程使用的时间和进程花费的时间(例如,如果它等待I / O完成等)。
  • user:是进程所花费的CPU的(但不包括内核)时间。这只是执行过程时使用的实际CPU时间。
  • sys是是进程在内核中花费的CPU时间。
    简单来说user+sys就是你的进程实际使用了多少总的CPU时间。

这里我们单单比较运行的速度看real就好了,可以看到使用了pigz之后压缩的速度比gzip快了接近40倍。

解压8个比较小的文件

每个文件大约2.5G

# 使用 gzip
time gunzip /RAW/Lappan/shotgun_raw/original_data/808*

real    8m15.766s
user    6m53.032s
sys     1m22.136s

# 使用 pigz
time unpigz /RAW/Lappan/shotgun_raw/original_data/808*

real    4m26.587s
user    5m27.408s
sys     2m3.336s

再次解压的速度使用pigz也有一定幅度的提升。

压缩一个大的文件

文件大小约为75G

# 使用 gzip
time gzip /RAW/Lappan/pigz_test.fastq

real    128m10.759s
user    127m19.204s
sys     0m43.732s

# 使用 pigz
time pigz /RAW/Lappan/pigz_test.fastq

real    3m19.088s
user    131m45.328s
sys     1m42.384s

解压一个大的文件

文件大小大约为22G

# 使用 gzip
time gunzip /RAW/Lappan/pigz_test.fastq.gz

real    7m53.338s
user    6m50.192s
sys     1m2.652s

# 使用 pigz
time unpigz /RAW/Lappan/pigz_test.fastq.gz

real    4m23.894s
user    5m25.096s
sys     2m8.820s

从上面的结果来看pgiz表现是相当不错,当你处理大量的数据时,恰当的使用它能够减少很多你无聊等待解压或者压缩的时间,进而提高你的工作效率。当然这也是其中一种方法。还有很多其它方式能够达到相同的效果,例如使用parallel+gzip, 又或者Parafly+gzip等等的方式。如果大家感兴趣,在日后的推文可以专门讨论一下并行运行的技巧工具等这个话题。

相关文章

  • 生信小工具之:并行解压神器pigz

    做生物信息的同学会相信你们都会遇到这样的情况:你会遇到成白或者上千的sequencing data,然后你需要解压...

  • pigz更快的压缩和解压工具

    pigz(parallel implementation of gzip)是一个并行执行的压缩工具,解压缩比gzi...

  • pigz打包、解压

    打包 $tar --use-compress-program=pigz -cvpf package.tgz ./p...

  • pigz | Linux多线程压缩软件

    pigz充分利用了现代多核CPU的性能,大幅提高压缩解压的速度。在我的测试中,pigz比Ubuntu默认的压缩方式...

  • [pigz] tar.gz 压缩/解压

    pigz 参数-d, --decompress Decompress the compressed inp...

  • tar 使用pigz多线程打包

    安装 yum -y install pigz 压缩 tar cvf - zencart | pigz > zenc...

  • Linux并行gzip压缩工具pigz

    由于项目原因,经常需要压缩和解压缩大量的数据。10G规模以上,而默认tar打包和系统默认的压缩工具是单线程的。服务...

  • 解压神器

    原谅我大半夜的笑出猪叫声,最近偶尔会有焦虑,推荐您一个神奇的解压方法,亲测有效? 打开京东购物,app. 小程序,...

  • 解压神器

    2022.4.23 113/849 周六 有人说解压神器是吃东西。我本来是一枚吃货,但是在压力巨大时,却一点也不想...

  • 解压神器

    “姑姑,姑姑给你看看我的手工!小侄女兴冲冲跑过来。第一次见到如此可爱的东东,白白荷叶边,圆圆鼓鼓,两边还有可爱的笑...

网友评论

    本文标题:生信小工具之:并行解压神器pigz

    本文链接:https://www.haomeiwen.com/subject/mabtmqtx.html