2013年5月31日金曜日

ZFS on Linux 0.6.1 の性能を OpenIndiana 151a7 と比較

ZFS on Linux を使い始めて約1年、始祖の Solaris 実装とどの程度性能が違うのか知りたくなり、試してみました。

Solaris 系は、初挑戦でしたが、インストールはさほど難しくなかった印象です。むしろ、その前準備(マルチブートのためのパーティション構成変更作業)に手間がかかりました。特に、ディスク先頭の Windows7 のパーティションをいじるのに苦労しました。実験に使ったマシンは ThinkPad T510 ですが、プリインストールされていた Windows7 環境では、C: の他にシステムパーティションと呼ばれる領域がもう1つ確保されていて、これを削除するのが手間でした。ZFS本(ISBN-13: 978-4048676540)によると、OpenSolaris は、基本パーティションにインストールする必要があるということで、Windows7 のシステムパーティションが邪魔になったのです。そこは本題ではないので、詳細は割愛しますが、最終的に次のようなパーティション構成となりました。

今回の測定環境は ThinkPad T510 + 古い SAMSUNG SSD (eSATA接続) です。
# zdb
tankM:
    version: 23
    name: 'tankM'
    state: 0
    txg: 194345
    pool_guid: 17978947249853082376
    hostid: 8323328
    hostname: 'my42'
    vdev_children: 1
    vdev_tree:
        type: 'root'
        id: 0
        guid: 17978947249853082376
        children[0]:
            type: 'disk'
            id: 0
            guid: 2831835469869973055
            path: '/dev/disk/by-id/ata-SAMSUNG_MCCOE64G8MPP-0VA_SE809N0057-part1'
            phys_path: '/dev/ada1s1'
            whole_disk: 0
            metaslab_array: 24
            metaslab_shift: 29
            ashift: 12
            asize: 64017399808
            is_log: 0
            DTL: 73
            create_txg: 4
    features_for_read:
# zpool get all tankM
NAME   PROPERTY               VALUE                  SOURCE
tankM  size                   59.5G                  -
tankM  capacity               32%                    -
tankM  altroot                -                      default
tankM  health                 ONLINE                 -
tankM  guid                   17978947249853082376   local
tankM  version                23                     local
tankM  bootfs                 -                      default
tankM  delegation             on                     default
tankM  autoreplace            off                    default
tankM  cachefile              -                      default
tankM  failmode               wait                   default
tankM  listsnapshots          off                    default
tankM  autoexpand             off                    default
tankM  dedupditto             0                      default
tankM  dedupratio             1.00x                  -
tankM  free                   39.9G                  -
tankM  allocated              19.6G                  -
tankM  readonly               off                    -
tankM  ashift                 12                     local
tankM  comment                -                      default
tankM  expandsize             0                      -
tankM  freeing                0                      local
tankM  feature@async_destroy  disabled               local
tankM  feature@empty_bpobj    disabled               local
tankM  feature@lz4_compress   disabled               local
# zfs get all tankM -s local
NAME   PROPERTY              VALUE                  SOURCE
tankM  mountpoint            /tankM                 local
tankM  atime                 off                    local
zpool の構成は前記のとおりのシングル構成です。

SAMSUNG SSD の基本性能は次のような具合(Disk Utility のベンチマーク結果)です。

以下、bonnie++ 1.96 のデータです。

■CentOS 6.4
# uname -a
Linux xxxx 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
# bonnie++ -u root -d /tankM
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx         15464M   151  99 68485  12 40237   9   319  84 108505  11 910.6  26
Latency             73426us     146ms    1240ms     842ms     302ms     480ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 17826  84 +++++ +++  4228  29 19977  85 +++++ +++ 21914  96
Latency             31300us     332us   77141us   31685us      67us     912us
1.96,1.96,xxxx,1,1369835550,15464M,,151,99,68485,12,40237,9,319,84,108505,11,910.6,26,16,,,,,17826,84,+++++,+++,4228,29,19977,85,+++++,+++,21914,96,73426us,146ms,1240ms,842ms,302ms,480ms,31300us,332us,77141us,31685us,67us,912us

■OpenIndiana 151a7
# uname -a
SunOS xxxx 5.11 oi_151a7 i86pc i386 i86pc Solaris
# ./bonnie++ -u root -d /tankM
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx            16G   209  96 75797  12 42079  10   606  99 102241  10  2499  34
Latency             43718us     190ms    1469ms   18081us     545ms   45179us
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16  5706  15 +++++ +++ +++++ +++ 24358  53 +++++ +++ +++++ +++
Latency              1686ms     144us     102us    7317us      27us      92us
1.96,1.96,xxxx,1,1369836787,16G,,209,96,75797,12,42079,10,606,99,102241,10,2499,34,16,,,,,5706,15,+++++,+++,+++++,+++,24358,53,+++++,+++,+++++,+++,43718us,190ms,1469ms,18081us,545ms,45179us,1686ms,144us,102us,7317us,27us,92us

■FreeBSD 9.1
# uname -a
FreeBSD xxxx 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
# bonnie++ -u root -d /tankM
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx            16G   174  99 69411  11 38889   7   414  91 104735   5  1040   8
Latency             50405us    3339ms    2989ms     628ms     620ms    1002ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 31430  95 +++++ +++ 16114  62 32265  96 +++++ +++  4389  93
Latency             13375us     118us     118ms   13380us     115us     447us
1.96,1.96,xxxx,1,1369838677,16G,,174,99,69411,11,38889,7,414,91,104735,5,1040,8,16,,,,,31430,95,+++++,+++,16114,62,32265,96,+++++,+++,4389,93,50405us,3339ms,2989ms,628ms,620ms,1002ms,13375us,118us,118ms,13380us,115us,447us

■Fedora18
# uname -a
Linux xxxx 3.9.3-201.fc18.x86_64 #1 SMP Tue May 21 17:02:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
# bonnie++ -u root -d /tankM
...
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
xxxx         15688M   149  95 74100  13 42477  10   362  87 108047  11 946.6  30
Latency             98607us     170ms    1224ms     733ms     433ms     621ms
Version  1.96       ------Sequential Create------ --------Random Create--------
xxxx                -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 13264  56 +++++ +++ 10665  70 19831  85 +++++ +++ 24615  94
Latency               310ms    7156us   49153us   39069us      80us     551us
1.96,1.96,xxxx,1,1369840982,15688M,,149,95,74100,13,42477,10,362,87,108047,11,946.6,30,16,,,,,13264,56,+++++,+++,10665,70,19831,85,+++++,+++,24615,94,98607us,170ms,1224ms,733ms,433ms,621ms,310ms,7156us,49153us,39069us,80us,551us

測ってみた感想としては、わたしの利用範囲においては、OpenIndiana , FreeBSD と比較して、Linux 実装のパフォーマンスは遜色ない(若干劣る程度)と感じました。ただ、普段使いは CentOS6 なのですが、最新カーネルの恩恵を受けられる Fedora18 のほうがパフォーマンス発揮できるようです。

Fedora, CentOS 等の iso イメージ格納庫、調査用ソース展開場所(主にカーネル)、自作開発ソース格納庫、バックアップイメージ格納庫、KVM ゲスト用ディスク割り当て(スパース zvol)が、わたしの現在の用途です。

本格的に使っている zpool の形態は、RAIDZ(HDDx4 , バックアップ, iso格納用)、RAIDZ2(HDDx6+zram(L2ARC), ソースコード格納用)、mirror+stripe(HDDx2+HDDx2+SSDx2(ZIL&L2ARC), 大容量バックアップ用NFS)、HW-RAID上のシングル(KVM ゲスト向けzvol切り出し用)といったところです。すっかり、どっぷりと使っています。
仕事では、SAN ストレージ+multipath+LVM2+ext4 領域も使っていますが、ZFS と比べて、運用・操作性が格段にヤヤコシイく感じます。

■関連記事
3つのOSでZFSの性能を比較

2013年5月26日日曜日

ゆっくりとIOさせるツール

ときおり使うコマンドなのですが、ときおり過ぎてコマンド名を思い出せなくなるので、自分向けのメモです。
# cat /etc/centos-release 
CentOS release 6.4 (Final)
# rpm -qi pv
Name        : pv                           Relocations: (not relocatable)
Version     : 1.1.4                             Vendor: Fedora Project
Release     : 3.el6                         Build Date: Mon 05 Jul 2010 09:29:34 PM JST
Install Date: Sat 15 Sep 2012 02:22:36 PM JST      Build Host: x86-17.phx2.fedoraproject.org
Group       : Development/Tools             Source RPM: pv-1.1.4-3.el6.src.rpm
Size        : 68426                            License: Artistic 2.0
Signature   : RSA/8, Tue 06 Jul 2010 11:11:06 AM JST, Key ID 3b49df2a0608b895
Packager    : Fedora Project
URL         : http://www.ivarch.com/programs/pv.shtml
Summary     : A tool for monitoring the progress of data through a pipeline
Description :
PV ("Pipe Viewer") is a tool for monitoring the progress of data through a
pipeline.  It can be inserted into any normal pipeline between two processes
to give a visual indication of how quickly data is passing through, how long
it has taken, how near to completion it is, and an estimate of how long it
will be until completion.
CentOS 6 の場合、EPEL に収録されています。

使用例です。
# dd if=backup.sdX bs=64k | pv --rate-limit 35m --buffer-size 64k | dd of=/dev/sdX bs=1M oflag=direct
 124GB 1:03:10 [33.9MB/s] [                          <=>                      ]
この例では、pv の出力を 35MB/s に制限しています。

隠れた逸品と思うのですが、ネーミングが覚えにくいと思う。
人気ブログランキングへ にほんブログ村 IT技術ブログへ