SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
SSDに対するI/Oのブロックサイズ(アロケーションユニットサイズ)を調整することによって、I/O性能をどの程度向上させることができるでしょうか。エンタープライズ利用に対応する「Intel SSD DC S3700 Series」の200GBモデルを使って、ブロックサイズの調整によるチューニング効果を検証しました。
チューニングによってI/O性能の向上を期待できる要因としては、データを読み書きする都度データの記録位置にヘッドを動かしプラッタを回転させるHDDに対して、SSDはデータ読み書き時の挙動が根本的に異なることです。HDDは必要な複数のデータが1つのブロック内に保存されていれば、ヘッドを動かしプラッタを回転させる時間、すなわちシークタイムが減少します。これに対して、SSDには可動部が無くNANDメモリーを記録域として電気的に情報を読み書きしますので、必要な複数のデータが離れたブロックに保存されていても性能影響を受けないと考えられます。(これがSSDにはデフラグが不要と言われる所以です。) であれば、実際に格納するデータサイズを考慮して最小限のブロックサイズでI/Oを行えば、余計なデータを読み書きする割合が下がり、I/O性能が向上する可能性があります。
逆に性能向上が期待できない要因としては、SSD内部では記録域であるNANDメモリーへの読み書きが4KB/8KB/16KB(※製品によって異なる)といったページサイズの単位で行われていることです。例えば、アプリケーションが2KBのブロックサイズでI/Oを行った場合でも、SSD内部では4KBのページサイズでI/Oが行われていれば、I/O性能がほとんど向上しない可能性も考えられます。
今回の検証では、ベンチマークツールにOracle社が無償で提供する「Oracle ORION」を利用して、NTFSファイルシステムのアロケーションユニットサイズとベンチマークツールが発行するI/Oブロックサイズを調整しながらI/O性能の計測を行いました。SSDのチューニングやシステムのIOPSプランニング時に参考となれば幸いです。
検証環境
ハードウェア環境
- Lenovo IdeaCentre K430
Core i7-3770 3.4GHz 8MB L3 DMI 5GT/s
PC3-12800 4GB * 2
Intel Z75 Express チップセット
SATA 3 (6.0 Gb/s) - Intel SSD DC S3700 Series 200GB (SSDSC2BA200G301)
Firmware Version : 5DV10250
ソフトウェア環境
- Windows 7 Home Premium Edition SP1 [6.1 Build 7601] (x64)
Filesystem : NTFS 3.1 (5.1) - Oracle ORION 10.2.0.1.0
SSD製品の公式仕様・実売価格
SSDは「Intel SSD DC S3700 Series」の200GBモデルを使います。書き込み耐久性が非常に高く、「5年間にわたり毎日10回ドライブの全領域に書き込むことが可能」なエンタープライズ利用に対応するSSD製品です。
Product Name | Capacity | Read IOPS (Rand. 4KB) | Write IOPS (Rand. 4KB) | 実売価格 (税・送料込) |
SSDSC2BA800G301 | 800GB | 75,000 | 36,000 | ¥264,519 |
SSDSC2BA400G301 | 400GB | 75,000 | 36,000 | ¥109,420 |
SSDSC2BA200G301 | 200GB | 75,000 | 32,000 | ¥47,980 |
SSDSC2BA100G301 | 100GB | 75,000 | 19,000 | ¥24,780 |
- コントローラ : Intel製 PC29AS21CA0 controller
- インターフェース : SATA3 6Gb/s(SATA2 3Gb/s対応)
- Nand Type : high endurance technology MLC(HET-MLC)
- フォームファクター : 2.5 inch SATA
- 本体サイズ : L 100.45mm × W 69.85mm × H 7.0mm
- 本体重量 : 73.6g(200GBモデル 本体実測 72.4g)
- 消費電力 : 標準最大 6W、アイドル時 0.65W
- 付属品 : SPEED DEMONシール
- 保証期間 : 5年
- MTBF : 2,000,000時間(約228年)
- Made in China
ベンチマーク結果
ベンチマーク実行時のコマンド・ベンチマーク結果の集計方法
(参考 : Oracle ORIONの使用方法 (Windowsディスクベンチマーク) )
- SSD全領域のパーティション削除
- Secure Erase
- アロケーションユニットサイズを指定してパーティション作成(Sドライブ)
- 10GB×16ファイル、合計160GBの計測用ファイルを作成(※管理者権限で実行)
- ORIONのフォルダ配下に orion-test.lun ファイルを作成して、上記の16ファイルを指定
- OSを再起動
- ORIONを実行してI/O性能を計測
-writeオプションでread/writeの割合を「80:20」に設定。-size_smallオプションを「-size_small 4」(単位:KB)等と指定して、small I/O時のI/Oブロックサイズを変化させながらベンチマークを実行する。計2回実行して、2回目の計測結果を採用する。
C:> md S:\temp C:> md S:\temp\orion-test C:> C:> fsutil file createnew S:\temp\orion-test\testfile-010.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-020.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-030.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-040.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-050.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-060.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-070.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-080.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-090.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-100.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-110.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-120.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-130.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-140.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-150.dbf 10737418240 C:> fsutil file createnew S:\temp\orion-test\testfile-160.dbf 10737418240
C:\> cd C:\Program Files\Oracle\Orion C:\Program Files\Oracle\Orion> orion -run advanced -testname orion-test -write 20 -num_disks 2 -duration 120 -size_small 4 C:\Program Files\Oracle\Orion> orion -run advanced -testname orion-test -write 20 -num_disks 2 -duration 120 -size_small 4
上記の条件でORIONを実行した場合、SSDに対して1回あたり約250GBの読み込み・約62GBの書き込みを行う。ベンチマークの実行時間は、1回あたり約32分。ORIONでは、高いI/O負荷が継続して発生する状態でSSDの性能を計測できる。
検証パターン
ORIONは、I/O負荷を生成するスレッド数を段階的に増やしながら、smallサイズでのI/O性能とlargeサイズでのI/O性能を計測する。-num_disksオプションを「-num_disks 2」と指定した場合は、small I/Oでは10スレッドまで、large I/Oでは4スレッドまでスレッド数を段階的に増やして計測を行う。
今回検証したアロケーションユニットサイズとI/Oブロックサイズの組み合わせは、次の表の通り。
No. | アロケーション ユニットサイズ | small I/O ブロックサイズ | large I/O ブロックサイズ | 備考 |
1 | 1KB | 1KB | 1024KB | |
2 | 2KB | 2KB | 1024KB | |
3 | 4KB | 4KB | 1024KB | |
4 | 4KB | 8KB | 1024KB | Oracleデフォルト値 |
5 | 8KB | 8KB | 1024KB | |
6 | 16KB | 16KB | 1024KB |
ベンチマーク結果
IOPS
Latency
MB/sec(Large IO size : 1024 KB)
ベンチマーク結果考察
- Intel SSD DC S3700 Seriesのページサイズは公表されていないものの、今回のベンチマーク結果からは「4KB」である可能性が高いと考えられる。
- I/Oブロックサイズを4KBから2KBや1KBに変更することで、システムのワークロードによっては1.06~1.14倍のIOPSを発揮できる可能性がある。ただし、10スレッドでの負荷生成時にはIOPS値が逆転しており、2KBや1KBは高負荷環境での性能に懸念が残る結果となっている。最大1.14倍の性能向上であれば、積極的に採用するチューニング方法にはなり得ない。
- Windows OS 及び Oracle DBのデフォルト値であるアロケーションユニットサイズ4KB・I/Oブロックサイズ8KBの組み合わせ(検証パターンNo.4、グラフ上の緑線)は、ページサイズが4KBのSSD環境では性能面で不利となる可能性が高い。アロケーションユニットサイズ4KB・I/Oブロックサイズ4KBの組み合わせ(検証パターンNo.3、グラフ上の赤線)に変更することによって、システムのワークロードによっては1.38~1.81倍のIOPSを発揮できる可能性がある。
- large I/O時のスループットでは、最大30.7MB/secの性能差を計測した。予想通りではあるが、全体的にアロケーションユニットサイズが大きい方がスループット性能が向上する傾向が見て取れる。ただし、同じ計測条件となるはずの検証パターンNo.3(赤線)と検証パターンNo.4(緑線)でも計測結果にかなり差異が有り、計測回によってはスループットの計測結果に誤差が生じていると考えた方が妥当かも知れない。
他SSD製品とのベンチマーク結果比較
IOPS(Small IO size : 4 KB)Latency(Small IO size : 4 KB)
MB/sec(Large IO size : 1024 KB)
ベンチマーク結果考察
- 下位モデルのIntel SSD DC S3500 Series(240GB)と比較すると、IOPS値・Latency値・スループット性能共にS3700がS3500を上回る結果となった。S3700とS3500の構造的な違いは「HET-MLC NAND」の搭載有無のみであることから、S3500ではコントローラーが上限性能を制限しているものと思われる。
(参考 : Intel SSD DC S3500 Series 240GB 高負荷ベンチマーク結果&チューニングTips ) - コンシューマー向けモデルのIntel SSD 530 Seriesと比較すると、IOPS値・Latency値は530 Seriesを上回り、スループット性能では530 Seriesを下回る結果となった。530 Seriesは、SandForceコントローラー「SF-2281」の圧縮アルゴリズムによって、高速なスループット性能を発揮している。これに対して、データセンター向けモデルのDC S3700 Seriesでは、圧縮の利かないデータに対しても高速なスループット性能を安定して発揮するように設計されているため、このような性能特性の差が生じるものと推測される。
(参考 : Intel SSD 530 Series 240GB 高負荷ベンチマーク結果&チューニングTips )
CrystalDiskMark ベンチマーク結果(参考)
ディスク使用領域 0GB
テストデータ ランダム | テストデータ 0Fill |
ディスク使用領域 160GB
テストデータ ランダム | テストデータ 0Fill |
CrystalDiskInfo S.M.A.R.T.情報(参考)
240GB級SSDベンチマーク結果
東芝SSD HG5d 256GB 高負荷ベンチマーク速度比較結果Intel SSD DC S3500 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 730 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 530 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 520 Series 240GB 高負荷ベンチマーク速度比較結果
Intel SSD 335 Series 240GB 高負荷ベンチマーク速度比較結果
PLEXTOR PX-256M5P 256GB 高負荷ベンチマーク速度比較結果
Samsung SSD 840 PRO 256GB 高負荷ベンチマーク速度比較結果
SSD I/Oブロックサイズの調整によるチューニング効果検証 (DC S3700編)
SSD I/Oブロックサイズの調整によるチューニング効果検証 (東芝THNSNS240GBSP編)
参考になるサイト
Intel – Intel Solid-State Drive DC S3700 シリーズ
SH2の日記 – Provisioned IOPSの検討
PostgreSQL Deep Dive – データブロックサイズの変更と分析系クエリへの性能影響(SSD編)
Tom’s Hardware – Intel SSD DC S3700 Review: Benchmarking Consistency