Skip to content

Instantly share code, notes, and snippets.

@tkfm-yamaguchi
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tkfm-yamaguchi/9946263 to your computer and use it in GitHub Desktop.
Save tkfm-yamaguchi/9946263 to your computer and use it in GitHub Desktop.

圧縮->転送->解凍の比較

準備

ダミーファイルの作成

$ dd if=/dev/zero of=dammy1g bs=1024M count=1

pigz のインストール

pigz: gzip圧縮をマルチスレッドで実行するコマンド.

$ sudo apt-get install pigz

転送方法

  1. 無圧縮(tarのみ)で転送
  2. gzip圧縮(not multi-threaded)させつつ転送、
  3. gzip圧縮(with pigz)で圧縮、解凍は tar (not multi-threaded)
  4. gzip圧縮(with pigz)で圧縮、解凍は pigz + tar (multi-threaded)

結果

1. 無圧縮(tarのみ)で転送

$ time tar cf - dammy1g | ssh ***@192.168.10.102 "tar xf - -C /home/***"
tar cf - dammy1g  0.12s user 2.34s system 10% cpu 23.473 total
ssh ***@192.168.10.102 "tar xf - -C /home/***"  14.14s user 7.15s system 90% cpu 23.475 total

2. gzip圧縮(not multi-threaded)させつつ転送

$ time tar zcf - dammy1g | ssh ***@192.168.10.102 "tar zxf - -C /home/***"
tar zcf - dammy1g  8.66s user 1.61s system 116% cpu 8.804 total
ssh ***@192.168.10.102 "tar zxf - -C /home/***"  0.03s user 0.01s system 0% cpu 8.911 total

3. gzip圧縮(with pigz)で圧縮、解凍は tar (not multi-threaded)

$ time tar cf - dammy1g | pigz -p3 | ssh ***@192.168.10.102 "tar zxf - -C /home/***"
tar cf - dammy1g  0.03s user 0.43s system 7% cpu 6.431 total
pigz -p3  18.16s user 0.42s system 288% cpu 6.437 total
ssh ***@192.168.10.102 "tar zxf - -C /home/***"  0.09s user 0.10s system 2% cpu 6.523 total

4. gzip圧縮(with pigz)で圧縮、解凍は pigz + tar (multi-threaded)

$ time tar cf - dammy1g | pigz -p3 | ssh ***@192.168.10.102 "unpigz -p5 | tar xf - -C /home/***"
tar cf - dammy1g  0.02s user 0.43s system 7% cpu 6.171 total
pigz -p3  18.15s user 0.36s system 299% cpu 6.177 total
ssh ***@192.168.10.102 "unpigz -p5 | tar xf - -C /home/***"  0.10s user 0.07s system 2% cpu 6.469 total

まとめ

  • ダミーファイルはzeroで埋めたファイルなので、圧縮時した時としない時の差が一番大きい(圧縮効率の差)
  • pigzを使った圧縮と展開(multi threaded)
    • 使ったほうが高速は高速
    • 時間効率の向上率はリソースの消費量と比べると小さい
    • 圧縮に比べて展開時の効率向上はいまいち?
    • ネットワークを介して転送されたものを展開するので、転送待ちの方が大きいのかも

使ってみた

$ tar cf - DIR-FOR-SCP | pigz -p3 | ssh ***@192.168.10.102 "unpigz -p5 | tar xf - -C /home/***"
tar cf - DIR-FOR-SCP  7.83s user 149.15s system 9% cpu 26:58.39 total
pigz -p3  2958.03s user 127.31s system 190% cpu 26:58.40 total
ssh ***@192.168.10.102 "unpigz -p5 | tar xf - -C /home/***"  426.92s user 108.60s system 33% cpu 26:58.41 total

$ du -sch DIR-FOR-SCP
78G     DIR-FOR-SCP
78G     合計
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment