少し時間が経ってしまったのですが、今年の夏頃に書いた検証レポートを公開します。
最新の機種と書きつつ、昨年のモデルのSSDが1つ混じっていたりなど、突っ込みどころはあるのですが、何かの参考になれば幸いです。
はじめに
昨今、記憶媒体装置の1つであるSSD(Solid State Drive)は、コンシューマー/エンタープライズを問わず、かなり普及してきている。
価格対容量のコストパフォーマンスや容量そのものに関しては、ハードディスクにかなわないものの、SSDの高いI/O性能(特にランダムアクセス)は非常に魅力的であることと、特に、低容量のもの(120GB以下等)であれば1万円以下で購入できる時代となってきており、コスト面に関しても手を出しやすくなってきている。
ところで、弊社のサービスで利用されているディスクの多くは、SATA/SASのハードディスクを利用しているケースが多い。
中には、Fusion-io社のioDriveなど、PCIe型の超高速I/Oデバイスを使用しているケースもあるが、まだまだコスト面では高価な存在であり、ハードディスクとの中間を埋めるデバイスのデファクトスタンダードとなりうる存在がSSDであることは、既に明白である。
そこで、SSDの最新モデルの中で、いくつか話題となっている製品を実際のサーバ上でI/Oベンチマークを取得し、各製品がどのくらいの性能値を出せるのかを確認する。
もう1つ、別の話題としては、今夏より弊社サービスの多くで利用されているDELLのサーバ(R210/R310/R410/R510/R610/R710)の新しいモデル(R320/R420/R620/R720)が出荷されはじめたことである。これだけではディスクI/Oの話とは無縁そうに見えるが、中で利用されているRAIDカードのモデルも一新されている。
RAIDカードは、キャッシュがついているモデルもあり、ディスクI/O性能を引き上げる仕組みがある。また、最近はそのキャッシュにSSDが使える技術(LSI社の製品では"CacheCade"と呼ばれる)も台頭してきている。
今回、新しいDELLのサーバで使える新しいRAIDカードについても、I/Oベンチマークの対象とし、どのくらいの性能レベルで利用できるのかをあわせて確認する。
本レポートでは、上記の通り、最新のSSDの各モデルや、最新のDELLサーバ製品で使えるRAIDカードに関するI/Oベンチマークの取得結果を公開する。これによって利用するサーバ(DB、キャッシュサーバ、ストレージ等)の特性によって、どのパターン(SSD、ハードディスク、RAIDカード...等)の記憶媒体装置を利用するかの判断材料の1つとなれば幸いである。
(開発環境のPC等に使うモデル選定にも役立てられる内容かもしれない。)
尚、時間の都合上、ディスクI/Oのパターン(シーケンシャル/ランダムアクセス)や、SSD、RAIDおよびRAIDコントローラ等の仕組みの話は、インターネットや書籍で多くの情報が公開されているため割愛し、今回はあくまでベンチマークに特化したレポートとする。
また、最後の「おわりに」の項にて、本検証内容の注意事項を数点記載しているため、あわせて参照していただきたい。
ベンチマーク対象
本レポートで、実際にI/Oパフォーマンスを確認してみたい事項は以下の通りである。
- SSDの各最新モデルでのIOPS値やBandWidth(帯域幅)の性能比較
- SSDを利用する際に、新RAIDカード経由/非経由のパフォーマンス比較
次に、比較する最新のSSDモデル一覧は以下の通り。
評判の良いモデルを中心に、様々なコントローラやNANDフラッシュメモリを搭載した各社の製品である。
- | 容量 | コントローラ | NANDフラッシュメモリ |
---|---|---|---|
Intel SSD 520 | 240GB | LSI(旧SandForce)製 SF-2281シリーズ | Intel製 25nm MLC NAND |
OCZ VERTEX 4 | 256GB | Indilinx製 Everest2 (Marvell製 88SS9187 改良版) | Intel製 25nm MLC NAND |
OCZ VERTEX 3 | 240GB | SandForce製 SF-2281シリーズ | Micron Technology製 25nm MLC NAND |
PLEXTOR M3 Pro | 256GB | Marvell製 88SS9174-BLD2 | 東芝製 24nm MLC NAND |
Samsung SSD 830 Series | 256GB | Samsung製 MCX (3-core) | Samsung製 20nm MLC NAND |
また、利用した新RAIDカードは以下のモデルとなる。
- DELL PERC H710P Mini
- コントローラ: LSI Logic MegaRAID SAS 2208 dual-core PowerPC ROC
- キャッシュサイズ: 1GB
ベンチマークの前提/手順
利用サーバ
ディスクI/Oのベンチマークをする際に利用したサーバは以下の2種類を利用した。
新RAIDカードを搭載したサーバと、RAIDカードを搭載せずSATAポートにデバイスを直結できるサーバの2種類である。
また、ほぼ全てのケースにおいて、RAIDカードの利用有無の比較をするために、各モデルのSSDを2枚利用し、RAID0(ストライピング)を組んでいる。
- RAIDカード(DELL PERC H710P Mini)を搭載したサーバ
- DELL R720 (Intel Xeon E5-2630, 8GB Mem)
- RAIDカード有り(ハードウェアRAID / DELL PERC H710P Mini)
- RAIDカード非搭載でSATAポートにデバイスを直結できるサーバ
- ExPrime Server R-280-HW (Intel Xeon E3-1220L, 8GB Mem)
- RAIDカード無し(ソフトウェアRAID)
尚、SSDは稼働部品を持たないため、通常のハードディスクと比較して、故障率と消費電力が低くなる傾向にある。
実際に、弊社ソーシャルゲームで利用している一部のMongoDBでは、ミドルウェアレベルでの冗長性(MongoDBのレプリカセット)が取れていることもあり、SSDを2枚使ってRAID0で稼働させ、ディスクI/Oの高速性を実現している。
利用OS/ファイルシステム
本レポートのベンチマーク環境で利用したOSやファイルシステムは、下記のもので統一した。
本来であれば、様々な種類での比較を行うべきだったが、時間の都合上、弊社サービスでよく利用されそうなものを選択した。
- CentOS 6.2 (Linux version 2.6.32-220.17.1.el6.x86_64)
- XFS
※ XFSの作成・マウントは以下のパラメータで行った。
# mkfs.xfs -f -b size=4096 -i size=512 -l size=64m [デバイス名] # mount -t xfs -o noatime,logbufs=8 [デバイス名] [マウントポイント]
利用ベンチマークツール
ベンチマークツールはfioのバージョン2.0.7を利用した。
今回、ベンチマークの取得に使ったfioコマンド/パラメータは以下の6つとなる。
まず、上から4つは、それぞれシーケンシャルリード/ライトとランダムリード/ライトのIOPSのチェックを主目的としていて、ブロックサイズは多くのシーンで使われそうな"4k"で設定している。
$ fio -filename=/data/test5g -direct=1 -rw=read -bs=4k -size=5G -numjobs=64 -runtime=10 -group_reporting -name=file1 $ fio -filename=/data/test5g -direct=1 -rw=write -bs=4k -size=5G -numjobs=64 -runtime=10 -group_reporting -name=file1 $ fio -filename=/data/test5g -direct=1 -rw=randread -bs=4k -size=5G -numjobs=64 -runtime=10 -group_reporting -name=file1 $ fio -filename=/data/test5g -direct=1 -rw=randwrite -bs=4k -size=5G -numjobs=64 -runtime=10 -group_reporting -name=file1
あとの2つは、ブロックサイズを大きくし、主にBandWidth(帯域幅)のチェック(シーケンシャルリード/ライト)を目的とする。
$ fio -filename=/data/test5g -direct=1 -rw=read -bs=32m -size=5G -numjobs=16 -runtime=10 -group_reporting -name=file1 $ fio -filename=/data/test5g -direct=1 -rw=write -bs=32m -size=5G -numjobs=16 -runtime=10 -group_reporting -name=file1
ベンチマーク結果
ここからは、ベンチマークの対象の項で挙げた、それぞれの確認事項ごとに記述する。
最新のSSD各モデルでのIOPS値やBandWidth(帯域幅)の性能比較
前項で記載した対象となる各SSDのI/Oベンチマークを取得する。
このケースでは純粋なSSDの性能の確認が目的のため、RAIDカードを経由せずにSATAポートに直結できるサーバを使用した。
各ケースでSSDを2枚使い、ソフトウェアRAID0(ストライピング)を組んで高速化している。またベンチマークツールは上記のfioコマンド6つである。
まず、以下の表・グラフはブロックサイズ4kのシーケンシャルリード/ライトとランダムリード/ライトのIOPS値である。(単位はIOPS)
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
---|---|---|---|---|---|
4k, sequential read | 152520 | 111856 | 150940 | 110174 | 108957 |
4k, sequential write | 59567 | 60274 | 61183 | 58492 | 58570 |
4k, randam read | 110513 | 113824 | 147180 | 113647 | 111546 |
4k, randam write | 57485 | 55994 | 58688 | 56924 | 56223 |
シーケンシャルライト、ランダムライトに関しては全ての製品が、ほぼ均衡した値となっているが、シーケンシャルリードについては、SandForce製のコントローラを持つ、"Intel SSD 520"と"OCZ VERTEX 3"のIOPS性能値が高かった。
また、ランダムリードに関しては、"OCZ VERTEX 3"のみが高性能という結果となった。(Intel SSD 520とはコントローラの型番と、NANDフラッシュメモリが異なるが、ここまで大きな差がつくようには思えず、もう少し深い調査が必要。)
次に、ブロックサイズを大きくし、BandWidth(帯域幅)のチェックを行った表が以下である。(単位はMB/s)
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
---|---|---|---|---|---|
32m, sequential read | 971.3MB/s | 751.5MB/s | 865.9MB/s | 964.7MB/s | 1056.7MB/s |
32m, sequential write | 623.4MB/s | 961.6MB/s | 655.8MB/s | 532.1MB/s | 866.0MB/s |
BandWidth(帯域幅)に関しては、シーケンシャルリードについては"Samsung SSD 830 Series"を筆頭に、上記の通り各SSDで個性が出ている結果となっている。
シーケンシャルライトも同様に値のバラつきはあるが、"OCZ VERTEX 4"および"Samsung SSD 830 Series"が優秀な結果といえる。
SSDを利用する際に、新RAIDカード経由/非経由のパフォーマンス比較
次に、SSDを使用する際に、RAIDカードを利用するとI/Oパフォーマンスにどう影響を与えるかを比較をしてみた。
利用したRAIDカードは、前項で記載した通り、"DELL PERC H710P Mini"といった優秀なRAIDカードを利用している。
尚、先ほど同様、各モデルの同一SSDを2枚使い、PERC H710P MiniによるハードウェアRAID0を組んでいる。
まずは、先ほどの各SSDのベンチマーク比較で、シーケンシャル/ランダムリードで良いIOPS値を出していた"OCZ VERTEX 3"について、以下の項目の比較を行った。
- RAIDカード無
- RAIDカード有 (Read Policy: Adaptive Read Ahead, Write Policy: Write Back)
- RAIDカード有 (Read Policy: No Read Ahead, Write Policy: Write Through)
- | RAIDカード有 (ARA, WB) |
RAIDカード有 (NRA, WT) |
RAIDカード無 |
---|---|---|---|
4k, sequential read | 94863 | 95328 | 150940 |
4k, sequential write | 32078 | 32653 | 61183 |
4k, randam read | 61493 | 89614 | 147180 |
4k, randam write | 31380 | 31818 | 58688 |
(※単位はIOPS)
まずは、IOPSの比較であるが、上記の結果通り、IOPS的な観点で見ると、RAIDカードを通さない方がパフォーマンスは良い結果となった。
- | RAIDカード有 (ARA, WB) |
RAIDカード有 (NRA, WT) |
RAIDカード無 |
---|---|---|---|
32m, sequential read | 1451.2MB/s | 902.2MB/s | 865.9MB/s |
32m, sequential write | 3349.2MB/s | 645.3MB/s | 655.8MB/s |
(※単位はMB/s)
次にBandWidth(帯域幅)の比較だが、RAIDカードの有無は大きく影響していないように見える。
ただ、Read Policyを"Adaptive Read Ahead"(シーケンシャルのみ先読み)をすると、このオプションの効果は目に見えてわかるほどリードパフォーマンスが良くなり、Write Policyを"Write Back"にすると書き込みキャッシュへの保存で完結するように見えるため、ライトパフォーマンスは大きく向上している。
以下に、下記項目に関してのI/OベンチマークをSSD各モデルごとに記載しておく。
- RAIDカード有 (Read Policy: Adaptive Read Ahead, Write Policy: Write Back)
- RAIDカード有 (Read Policy: No Read Ahead, Write Policy: Write Through)
尚、今回は、比較対象にハードディスク(SAS 15krpm)も加えてベンチマーク比較を行った。
Read Policy: Adaptive Read Ahead, Write Policy: Write Back の表・グラフ
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
SAS 15krpm |
---|---|---|---|---|---|---|
4k, sequential read | 97194 | 102974 | 94863 | 105699 | 104584 | 92446 |
4k, sequential write | 31533 | 31477 | 32078 | 32153 | 31337 | 31801 |
4k, randam read | 64737 | 102347 | 61493 | 97008 | 90574 | 3068 |
4k, randam write | 31170 | 31102 | 31380 | 31173 | 31040 | 2541 |
(※単位はIOPS)
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
SAS 15krpm |
---|---|---|---|---|---|---|
32m, sequential read | 1605.6MB/s | 1345.8MB/s | 1451.2MB/s | 1610.7MB/s | 1508.8MB/s | 451MB/s |
32m, sequential write | 3302.1MB/s | 3351.1MB/s | 3349.2MB/s | 3369.3MB/s | 3334.5MB/s | 3351.6MB/s |
(※単位はMB/s)
Read Policy: No Read Ahead, Write Policy: Write Through の表・グラフ
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
SAS 15krpm |
---|---|---|---|---|---|---|
4k, sequential read | 95948 | 98909 | 95328 | 107349 | 92003 | 22057 |
4k, sequential write | 31842 | 6572 | 32653 | 30085 | 32259 | 1040 |
4k, randam read | 51117 | 96576 | 89614 | 100538 | 91538 | 2998 |
4k, randam write | 30900 | 31186 | 31818 | 31558 | 31165 | 1216 |
(※単位はIOPS)
- | Intel SSD 520 |
OCZ VERTEX 4 |
OCZ VERTEX 3 |
PLEXTOR M3 Pro |
Samsung SSD 830 Series |
SAS 15krpm |
---|---|---|---|---|---|---|
32m, sequential read | 955.6MB/s | 702.5MB/s | 902.2MB/s | 943.2MB/s | 887.3MB/s | 281.5MB/s |
32m, sequential write | 596MB/s | 891.1MB/s | 645.3MB/s | 798.8MB/s | 728.7MB/s | 101.8MB/s |
(※単位はMB/s)
結果は上のグラフの通りだが、今回の条件(ファイルシステム、書き込みパターン)においては、今回利用したRAIDカードを通すことで、シーケンシャル/ランダムリードは10万IOPS強、シーケンシャル/ランダムライトは3万IOPS強でスポイルされていることがわかる。
また、SandForce製のコントローラを使用している"Intel SSD 520"と"OCZ VERTEX 3"の両製品は、RAIDカードを通すことで、ランダムリードのIOPSの落ち込みが大きい結果となった。(他に"OCZ VERTEX 4"のシーケンシャルライトでのIOPS値については異常な落ち込みが見られるが、原因については深い調査が必要。)
尚、シーケンシャルアクセスについては、SASのディスクでも同様のパフォーマンスが得られていることから、シーケンシャルアクセスが多くを占めるケースでは、RAIDカードとSASディスクの組み合わせでも十分なパフォーマンスが得られる。
参考: 他デバイス等のベンチマーク結果
最後におまけ程度ではあるが、上記以外のデバイスにいくつかで、同様のベンチマークを取得した。
ベンチマーク測定を行ったデバイスは以下の通りである。
- SASディスク(15krpm) * 4 + DELL PERC H710P Mini + CacheCade有り (RAID10, Read Policy: Adaptive Read Ahead, Write Policy: Write Back)
- SASディスク(15krpm) * 4 + DELL PERC H710P Mini + CacheCade有り (RAID10, Read Policy: No Read Ahead, Write Policy: Write Through)
- Fusion-io ioDrive Duo (ソフトウェアRAID0)
- Amazon EC2 / High I/O Quadruple Extra Large Instance (SSDデバイス * 2 / ソフトウェアRAID0)
- Amazon EC2 / High I/O Quadruple Extra Large Instance (EBSボリューム * 2 / ソフトウェアRAID0)
- | SAS 15krpm CacheCade (ARA, WB) |
SAS 15krpm CacheCade (NRA, WT) |
Fusion-io ioDrive Duo |
Amazon EC2 SSD Volume |
Amazon EC2 EBS Volume |
---|---|---|---|---|---|
4k, sequential read | 57410 | 45605 | 81211 | 110611 | 24993 |
4k, sequential write | 31819 | 3314 | 20859 | 21345 | 3113 |
4k, randam read | 62736 | 62608 | 37811 | 117840 | 20803 |
4k, randam write | 2468 | 1235 | 19128 | 18719 | 3614 |
(※単位はIOPS)
- | SAS 15krpm CacheCade (ARA, WB) |
SAS 15krpm CacheCade (NRA, WT) |
Fusion-io ioDrive Duo |
Amazon EC2 SSD Volume |
Amazon EC2 EBS Volume |
---|---|---|---|---|---|
32m, sequential read | 542.6MB/s | 309.4MB/s | 1177.1MB/s | 1268.7MB/s | 198.9MB/s |
32m, sequential write | 3336.8MB/s | 138.0MB/s | 921.4MB/s | 1129.5MB/s | 69.1MB/s |
(※単位はMB/s)
CacheCadeを利用したパターンでは、ハードディスクに加えて、SSDをキャッシュとして利用するため、最初の1回目のアクセスでは、SSDキャッシュを使わない数値とほとんど変わらないが、何度もアクセスを重ねるとキャッシュが効いてくるため、リードについては上記のような良好な結果となった。ライトについてはCacheCadeの恩恵はほとんど得られない結果となっている。
Fusion-io ioDrive Duoについては、今回のベンチマーク環境では想像に反した結果となった。アクセスパターンやファイルシステムを変えてみることで、おそらく期待通りの結果が出せると考える。
(実際、XFSではなく、Raw Deviceに対して、ブロックサイズ512Bの設定で、fioコマンドによるベンチマークを取得したところ公称スペック値に近い結果が得られた。)
また、これからパブリッククラウドサービスを利用するケースも多く出てくると考えられるので、最大手のクラウドサービスであるAmazon Web Servicesの仮想サーバである、Amazon EC2で選択できるデバイス2つ(SSDボリューム、EBSボリューム)に対して行ったベンチマーク結果も参考として記載しておく。
Amazon EC2のSSDボリュームは、ライトで伸び悩むもリードについては、シーケンシャル/ランダムアクセス問わず良好な結果を示している。また、EBSボリュームでもランダムリードで2万IOPSを超える結果を出すなど、単なるハードディスクボリュームではなく、バックエンドに何らかのキャッシュが存在していると考えられる。
おわりに
今回は、最新のSSD各モデル5種類を使って、弊社のサービスで利用しているような環境下でのパフォーマンス比較を行った。
その結果は上記に記した通りであるが、SandForce製のコントローラを採用しているSSDがシーケンシャル/ランダムリードの面で優れたパフォーマンスを出すことが確認できた。また、SSDを利用する際はRAIDカードを経由させずに、SATAポートに直接接続できる構成が望ましいこともわかった。
ただし、SSDの選定を行う際は、正確には下記のいくつかの注意事項を考慮すべきである。
1つ目は、本レポートでの各SSDは今回購入したばかりの状態でベンチマークを取得したことである。
SSDは一般的に劣化が大きくなるとパフォーマンスが低下する傾向にあるため、本来であれば、数百TBや数PB書き込んだ状態でのパフォーマンスもチェックし、耐久性も考慮すべきだろう。
また、その場合においてTrimコマンド(パフォーマンス低下を招く残骸データを削除するアクション)を発行した場合のベンチマークや、パーティションのアライメントを調整した際のパフォーマンスの比較は、本レポートでは確認できていないため、これらについても確認すべきである。
2つ目は、SSDを使用するケースは様々であり、ケースによってはスレッド数の大小や、扱うファイルサイズ(ブロックサイズ)の大小、IOスケジューラやファイルシステム等についてもそのシステムの特性により使い分けることになるため、そのあたりのバリエーションを考慮したパフォーマンス比較が、本レポートではできていない点である。
3つ目は、SSDをRAIDカード経由/非経由でのパフォーマンス検証を行ったが、例えばLSI製のRAIDカードであれば、FastPathと呼ばれる、RAIDカードでSSDを利用する上で最適化されたデバイスアクセスを行えるソリューションがあり、IOPSを飛躍的に向上させることができる模様なので、これらも比較対象として検討すべきである。
今後は、本レポートの結果だけでなく、上記についても、きちんと比較した上で今後のディスクデバイス選定の材料としたいと考えている。
最後に、完全に余談ではあるが、今回対象とした5つのSSDのパッケージを、近くの精鋭エンジニア6名に見せて、「パッケージだけ見て、どのSSDを買いたいですか?」と質問したところ、6名中4名が「Intel SSD 520」を選択したことを記しておく。Intel社のブランディング戦略はなかなか素晴らしい(違)。
Intel SSD 520 Series(Cherryville) 240GB 2.5inch Reseller BOX SSDSC2CW240A3K5
- 出版社/メーカー: インテル
- 発売日: 2012/02/07
- メディア: Personal Computers
- クリック: 6回
- この商品を含むブログを見る