オルタナティブ・ブログ > 吉政忠志のベンチャービジネス千里眼 >

IT業界でベンチャービジネスの支援をしている執筆者が日々の活動ログと感じたことを、徒然なるままに書き綴っていきます。

テクニカルコラム:かんたん♪ ZFS:第十二回:圧縮機能

»

これからZFSを勉強しようという方に好評な標記コラムの13号が発行されましたので、お伝えします。なお、バックナンバーは以下をご覧ください。

http://www.cmsinc.co.jp/mm/mailmagazine/nexenta_index.html

◆◆>[ テクニカルコラム:かんたん♪ ZFS  ]<◆◆◆◆◆◆◆◆◆◆◆◆

第十二回:圧縮機能

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

 こんにちは。本年もよろしくお願いいたします。今年はいつもの年より寒
  いようです。今までの経験では、夏が暑いと冬は寒さが厳しい。逆に冷夏
  だと暖冬ということが多いように思います。みなさんも風邪などひかない
  ようお気をつけください。

 このコラムでは実際に ZFS を使う上で役に立つ Tips を紹介します。
 今までのファイルシステムとは一味違う ZFS  を活用して面倒なファイル
 管理の苦労を減らしましょう!

-------------------------------------------------------------------

 パフォーマンス改善を行う時、負荷に対して処理能力を持て余している部
 分を補強してもほとんど改善は望めません。一方、処理能力を目一杯使っ
 ている部分を補強すると、大きな改善を期待することができます。

  今回は ZFS の圧縮機能について説明します。処理性能がディスク I/O 律
  速で CPU リソースに余裕がある場合は、 圧縮機能を適用することにより
  性能を改善できる可能性があります。

  理想的な条件で圧縮機能の効果を確認してみましょう。同じストレージプー
  ル上に作成した二つの ZFS ファイルシステムについて、 一方は圧縮機能
  を使用、もう一方は圧縮機能を使用しないよう設定します。そして搭載さ
  れた物理メモリよりも十分に大きなサイズのファイルをシーケンシャルに
  書き込みます。

  ■ 圧縮機能 : ON
    # zfs set compression=on t/compress/
    # dd if=/dev/zero of=/t/compress/data bs=128k count=131072
    131072+0 records in
    131072+0 records out
    17179869184 bytes (17 GB) copied, 8.08684 seconds, 2.1 GB/s

    ---------------------------
    CPU syscl  usr sys  wt idl
      0  1658    0  38   0  62
      1  9637    0  53   0  46
      2  2113    0  38   0  62
      3  1101    0  40   0  60
      4  4918    0  44   0  56
      5  8331    0  53   0  46
      6  4061    0  42   0  58
      7  2006    0  37   0  62

  ■ 圧縮機能 : OFF
    # zfs set compression=off t/nocompress/
    # dd if=/dev/zero of=/t/nocompress/data bs=128k count=131072
    131072+0 records in
    131072+0 records out
    17179869184 bytes (17 GB) copied, 38.5033 seconds, 446 MB/s

    ---------------------------
    CPU syscl  usr sys  wt idl
      0  1480    3   9   0  87
      1  4372    3  18   0  80
      2  2283    3  10   0  87
      3  1847    2  15   0  83
      4  1218    2  10   0  88
      5  1053    0  15   0  85
      6  2400    1  13   0  86
      7   469    1   8   0  90

  試験には物理プロセッサ Intel(r) Xeon(r) CPU E5620 が一台搭載された
  マシンを使用しました。物理メモリは 2 [GB] 搭載されています。

  結果、圧縮機能を使用すると 2.1 [GB/s]、しない場合は、446 [MB/s] の
  スループットとなりました。 446 [MB/s] は試験に使用したストレージ装
  置の物理的な性能と見なすことができます。圧縮機能を使用するとディス
  ク装置への I/O 負荷が少なくなり、アプリケーション (dd コマンド) か
  ら見た性能が大きく向上しています。

  圧縮機能を使用すると CPU 負荷が高くなるので注意してください。 この
  テストでは、8 コアとも使用率が 40 ~ 50 % 程度に上がりました。圧縮
  機能を使用しない場合は 10 ~ 20 % 程度です。 結果では sys の部分の
  使用率が上がっています。 これは圧縮処理が ZFS I/O 処理 (カーネル空
  間) で行われているからです。この部分はパイプライン化されており、圧
  縮のように純粋に CPU に依存する処理は複数のコアに負荷が分散します。
  iostat で確認し、ディスク I/O が限界性能に達していない場合は CPU
  のコア数を増やすことによりさらなる性能向上が期待できます。

  圧縮機能はこのテストのようにストリーム型のシーケンシャルアクセスが
  多い場合に有効です。一方でランダムアクセスが多い OLTP へ適用しても
  効果が少ないという報告もあります。

  圧縮アルゴリズムは lzjb と gzip を選択することができます。単に on
  と指定すると lzjb が使用されます。

    # zfs set compression=gzip t/compress/

  とすると gzip (圧縮レベル 6) が使用されます。

    # zfs set compression=gzip-9 t/compress/

  とすると gzip (圧縮レベル 9) が使用されます。gzip の方が圧縮率は高
  いのですが、その分 CPU 負荷が高くなります。

  圧縮機能使用する場合は、事前に検証を行い。十分に効果が期待できるこ
  とを確認した上で使用してください。

 今回のコラムでは、ZFS の圧縮機能を紹介させていただきました。

 (つづく)

 ■ 参考文献

  (1) BigAdmin: ZFS ソースツアー
       http://www.sun.com/bigadmin/hubs/multilingual/japanese/content/zfs-source.jsp

   (2) The Blog of Ben Rockwood
       http://www.cuddletech.com/blog/pivot/entry.php?id=983

   (3) ZFS でデータ圧縮
       http://blogs.sun.com/yappri/entry/zfs_compression

 (高田 浩生)

***

Comment(0)