メニュー 閉じる

タグ: ストレージ

ZFS on Linuxベンチマークおためし。そして…

フリーズしますね。(汗)
どうもSATAディスクのアクセスが、下手なようです。

ちょっと前から、ZFSのネイティブ版?(ただし非GPL)ということで、
ZFS on Linuxのテストをして、様子をみていました。
SSDをたくさん…は積めないのですが、ストレージの性能がどうにかほしくて
あのZFSなら、業務用のストレージのようなすごい機能も使えてイイネ!(゚∀゚)

…と思っていたのですが。
ちょっと使い物になっていません。。

単発ベンチマークではこんな数字はでるんですよ。
20150412zfs

ただ…
これでちょっとディスクアクセスを続けると、なんと。

I/O Waitが80%オーバーに、

LoadAvgが60.0を超え、

ストレージ操作がタイムアウトしまくり。

になってしまいます。
※このサーバーはNehalemのXeonで計8C/16T、メモリ24GBを搭載。

上記マシンはZVOLでRAWデバイスを割り当てたKVMの仮想マシンのWindows10(TP)の図。

同様にZVOLを使い、iSCSI経由のブロックデバイスとして割り当ててVMwareに
見せてみると…たいして負荷もかけていないのにストレージアクセスが止まり、
OSごとダウンしてしまいました。

これも原因はI/O WAITで、見たこともないようなレイテンシで10分近く無応答…
というような「わけのわからない」状態になりました。

LSIのMPTドライバもあやしいのですが、いろいろ試した限りでは、
「SATAのHDD/SSDを使って」いて、「IO負荷をかける」とだめでした。

そう、SASディスクではこのような負荷にはなりません。

これはどうやら、SATAの「NCQ」との相性(というかI/Oの出し方が下手)なようで、
SASのTCQではうまくハンドリングができていて、うまく動くようです。

ZFSがらみのFAQなどでも、「I/O WAITが高すぎてフリーズするんだけど…」
という報告がちらほらあるものの、あまり相手にされていなくて。

唯一見つけたこの記事でも、どうもSATAがだめらしいと分かってきた次第。。

ZFS Slow Performance Fix – Letsgetdugg
http://letsgetdugg.com/2009/10/21/zfs-slow-performance-fix/

どうやらもともとのZFSの系譜をたどると、OpenSolarisではよくあった話の様子。
この記事によれば、zfs_vdev_max_pending を設定すればよいのですが、
なんと、最新のZFS on Linux(0.6.4)でこのパラメータはなくなっていて、
別のいくつかのパラメータに置き換わっています。

ざっとあげると、
zfs_vdev_async_read_max_active
zfs_vdev_async_read_min_active
zfs_vdev_async_write_max_active
zfs_vdev_async_write_min_active
zfs_vdev_max_active
zfs_vdev_scrub_max_active
zfs_vdev_scrub_min_active
zfs_vdev_sync_read_max_active
zfs_vdev_sync_read_min_active
zfs_vdev_sync_write_max_active
zfs_vdev_sync_write_min_active

このぐらい、あります…(汗)

zfs_vdev_async_write_active_max_dirty_percent
zfs_vdev_async_write_active_min_dirty_percent

というのも関係ありそうです。
(man  zfs-module-parametersで参照可)

ですが、いろいろ設定してみても、I/O WAITは改善できていません。
もう少し悩んでみるつもりですが、なかなか根の深い問題かもしれません。

ZFSのMailing List(英語)にも参加してみたので、
同じような超絶I/O WAITで困っている症状の方がいたら、
便乗して食いついてみたい…とは思っていますが、英語はだめなのでwww

いやはや、低コストで、爆速なIOパフォーマンスと、
超絶高度なストレージ機能が全部ほしい!
って話なので、贅沢すぎるのかなぁ。

本家Solarisのx86版ではどうなのでしょうね。
OracleのSunストレージ(業務用)はそれ動いているはずなので、
そっちのZFSを一度動かしてみるのもありかもしれません。

気になる方には気になる世界だと思うのですが…(苦笑)
また情報仕入れてレポートしてみたいと思います。

(といいながら、このまま消えてしまいそう。。)

PCのディスクをSSDにしてみました~

image

先日買っちゃったSSD、ようやく乗せ替えました。
そして、さっそくベンチマーク。
おおー速い!!

(しまった、HDDの速度はかってなかった。まあいいか)

接続が3Gb/sなのでシーケンシャルの速度は頭打ちですが、
ランダムアクセスが想定していた程度に速くなったので満足ですw

仕様では読み書き75000IOPSという話だったので、ちょっと遅いのかな?

———————————————————————–
CrystalDiskMark 3.0.3 Shizuku Edition x64 (C) 2007-2013 hiyohiyo
                           Crystal Dew World :
http://crystalmark.info/
———————————————————————–
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   274.748 MB/s
          Sequential Write :   262.505 MB/s
         Random Read 512KB :   224.062 MB/s
        Random Write 512KB :   210.306 MB/s
    Random Read 4KB (QD=1) :    24.975 MB/s [  6097.5 IOPS]
   Random Write 4KB (QD=1) :    52.189 MB/s [ 12741.5 IOPS]
   Random Read 4KB (QD=32) :   167.068 MB/s [ 40788.1 IOPS]
  Random Write 4KB (QD=32) :    65.936 MB/s [ 16097.7 IOPS]

  Test : 1000 MB [C: 75.2% (179.3/238.4 GB)] (x3)
  Date : 2014/12/18 21:10:23
    OS : Windows 7 Professional SP1 [6.1 Build 7601] (x64)

smartctlの出力:
$ smartctl -a /dev/sda
smartctl 6.3 2014-07-26 r3976 [i686-pc-cygwin-win7(64)-sp1] (cygwin-6.3-1)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     TS256GSSD370
Serial Number:    **********
Firmware Version: N0815B
User Capacity:    256,060,514,304 bytes [256 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Dec 18 21:14:10 2014 JST
SMART support is: Available – device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x02) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x71) SMART execute Offline immediate.
                                        No Auto Offline data collection support.
                                        Suspend Offline collection upon new
                                        command.
                                        No Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0002) Does not save SMART data before
                                        entering power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  10) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0000   100   100   000    Old_age   Offline      -       0
  5 Reallocated_Sector_Ct   0x0000   100   100   000    Old_age   Offline      -       0
  9 Power_On_Hours          0x0000   100   100   000    Old_age   Offline      -       2
12 Power_Cycle_Count       0x0000   100   100   000    Old_age   Offline      -       11
160 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       0
161 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       43
163 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       3
164 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       796
165 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       4
166 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       0
167 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       0
168 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       3000
169 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       100
177 Wear_Leveling_Count     0x0000   100   100   050    Old_age   Offline      -       0
181 Program_Fail_Cnt_Total  0x0000   100   100   000    Old_age   Offline      -       0
182 Erase_Fail_Count_Total  0x0000   100   100   000    Old_age   Offline      -       0
192 Power-Off_Retract_Count 0x0000   100   100   000    Old_age   Offline      -       5
194 Temperature_Celsius     0x0000   100   100   000    Old_age   Offline      -       25
195 Hardware_ECC_Recovered  0x0000   100   100   000    Old_age   Offline      -       3819
196 Reallocated_Event_Count 0x0000   100   100   016    Old_age   Offline      -       0
197 Current_Pending_Sector  0x0000   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0000   100   100   050    Old_age   Offline      -       0
232 Available_Reservd_Space 0x0000   100   100   000    Old_age   Offline      -       100
241 Total_LBAs_Written      0x0000   100   100   000    Old_age   Offline      -       5925
242 Total_LBAs_Read         0x0000   100   100   000    Old_age   Offline      -       1094
245 Unknown_Attribute       0x0000   100   100   000    Old_age   Offline      -       6368

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         1         –

SMART Selective self-test log data structure revision number 1
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

この「Available_Reserved_Space」を見ておけば、事前に寿命が分かるはず。(たぶん)
常時起動させてるPCなので、どうなるか楽しみです。

SSDの故障対策はS.M.A.R.T.で

DSC_0756
使えば使うほど壊れるDISKなんて駄目でしょ…
と思っていたけど、やっぱりSSD導入に踏み切りました(笑)
S.M.A.R.T.で監視しとけば寿命がくる前に交換できることが分かったため。

1本はメインPC用。
Windows7だけど、Cygwin+smartmontoolsで監視します。

2本目はサーバーのiSCSIディスク用。
zfsでL2ARC/ZILキャッシュの検証に使用予定です。
とりあえずOpenIndianaでパフォーマンス検証から…

Write時のIOPS的に、CFDのアレや、Crucial M100より速いこと、
価格が安いのが決め手でTranscendにしましたw
スペックは下記のとおり。

シー・エフ・デー販売 TOSHIBA製SSD採用 2.5inch 内蔵型 SATA6Gbps 256GB CSSD-S6T256NHG6Q
・256GB版 (参考価格 14,126円)
・シーケンシャル Read 530MB/s、 Write 490MB/s
・ランダム Read 97,000 IOPS、 Write 67,000 IOPS

Crucial MX100 2.5インチ内蔵型SSD 256GB SATAIII CT256MX100SSD1
・256GB版 (参考価格 13,135円)
・シーケンシャルRead 550MB/s、 Write 330MB/s
・ランダム Read 85,000 IOPS、 Write 70,000 IOPS

Transcend SSD 2.5インチ SATA3 6Gb/s MLC採用 256GB 3年保証 TS256GSSD370
・256GB版 (参考価格 11,799円)
・シーケンシャル Read 531MB/s、 Write 315MB/s
・ランダム Read 75,000 IOPS、 Write 75,000 IOPS

デスクトップではCFDが良いですが、WriteのI/Oが多い場合は
CrucialやTranscendがいいかも。
これより高いのは…ちょっともったいないかな。。

搭載チップ数の関係のようですが、128GBは速度が落ちるものがありますね。
参考価格はみくりん調べ。

↓参考にしたページ。

この夏SSD買うならコレ!! 売れ筋&注目の全6メーカー7製品
http://ssds.findthebest.com/

Best SSDs 2014 – Compare Reviews, Benchmarks
http://ascii.jp/elem/000/000/918/918611/

もう冬ですが記事は参考になりました(笑)
誰かの参考になれば。。

・:*:・( ̄∀ ̄ )。・:*:・