SSD I/Oブロックサイズの調整によるチューニング効果検証 (東芝THNSNS240GBSP編)
SSDに対するI/Oのブロックサイズ(アロケーションユニットサイズ)を調整することによって、I/O性能をどの程度向上させることができるでしょうか。今回は東芝製SSD「THNSNS240GBSP」(IODATA SSDN-3T240B、CFD CSSD-S6T240NTS2Q)を使って、ブロックサイズの調整によるチューニング効果を検証します。
THNSNS***GBSPシリーズは、俗に言う「砂芝」のSSD製品で、SandForce製コントローラー「SF-2281/2282」をベースにした東芝カスタムコントローラー「TC58NC5HJ8GSB-01」と東芝製「24nm MLC NAND Flash」を搭載しています。ページサイズは公表されていません。
(参考 : TOSHIBA – The TOSHIBA THNSNS solid state drives )
今回の検証では、ベンチマークツールに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) - 東芝製SSD THNSNS240GBSP (IODATA SSDN-3T240B、CFD CSSD-S6T240NTS2Q)
Firmware Version : TA5ABBF0
ソフトウェア環境
- 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製品の公式仕様・実売価格
今回はTHNSNS***GBSPシリーズ(砂芝)の240GBモデルを使います。高負荷時にもプチフリ等とは無縁で安定した性能を発揮する、世間的にも評価が高いSSD製品です。東芝のコンシューマー向けSSDとしては、今話題の「HG5d」シリーズの1世代前にあたる製品です。
(参考 : 東芝SSD HG5d 256GB 高負荷ベンチマーク結果&チューニングTips )
Product Name | Capacity | Read IOPS (Rand. 4KB) | Write IOPS (Rand. 4KB) | 実売価格 (税・送料込) |
THNSNS480GBSP | 480GB | 41,000 | 非公表 | ¥34,980 |
THNSNS240GBSP | 240GB | 49,000 | 非公表 | ¥16,480 |
THNSNS120GBSP | 120GB | 54,000 | 非公表 | ¥9,380 |
THNSNS060GBSP | 60GB | 14,000 | 非公表 | ¥6,006 |
- コントローラ : TC58NC5HJ8GSB-01(SandForce製コントローラー「SF-2281/2282」をベースにした東芝カスタムコントローラー)
- インターフェース : SATA3 6Gb/s(SATA2 3Gb/s対応)
- Nand Type : 24nm MLC NAND Flash
- フォームファクター : 2.5 inch SATA
- 本体サイズ : L 100.0mm × W 69.85mm × H 9.5mm
- 本体重量 : 52g(240GBモデル 本体実測 51.9g)
- 消費電力 : アクティブ時 5.8W
- 付属品 : 無し(IODATA SSDN-3T240B)
- 保証期間 : 1年(IODATA SSDN-3T240B)
- MTBF : 1,000,000時間(約114年)
- Made in Philippines
ベンチマーク結果
ベンチマーク実行時のコマンド・ベンチマーク結果の集計方法
(参考 : Oracle ORIONの使用方法 (Windowsディスクベンチマーク) )
- SSD全領域のパーティション削除
- アロケーションユニットサイズを指定してパーティション作成(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)
ベンチマーク結果考察
- 今回のベンチマーク結果からは、通常使用ではアロケーションユニットサイズ「4KB」を推奨する。本製品は「4KB」でのI/Oに最適化されていると推測される。動画倉庫等、大きなサイズのファイルを保存する用途では、アロケーションユニットサイズは「16KB」でも良い。
- THNSNS***GBSPシリーズ(砂芝)のページサイズは公表されていないものの、今回のベンチマーク結果からは「4KB」である可能性が高いと考えられる。
- I/Oブロックサイズを4KBから2KBや1KBに変更することで、IOPS値・Latency値が逆に悪くなっており、積極的に採用するチューニング方法にはなり得ない。
- Windows OS 及び Oracle DBのデフォルト値であるアロケーションユニットサイズ4KB・I/Oブロックサイズ8KBの組み合わせ(検証パターンNo.4、グラフ上の緑線)は、ページサイズが4KBのSSD環境では性能面で不利となる可能性が高い。アロケーションユニットサイズ4KB・I/Oブロックサイズ4KBの組み合わせ(検証パターンNo.3、グラフ上の赤線)に変更することによって、システムのワークロードによっては1.05~1.66倍のIOPSを発揮できる可能性がある。
- large I/O時のスループットでも、アロケーションユニットサイズ4KBと16KBの計測時にほぼ同等のMB/sec値を記録している。本製品では、アロケーションユニットサイズが大きい方が必ずしもスループット性能が向上する訳ではないことが分かる。ただし、同じ計測条件となるはずの検証パターンNo.3(赤線)と検証パターンNo.4(緑線)でも計測結果にかなり差異が有り、計測回によってはスループットの計測結果に誤差が生じていると考えた方が妥当かも知れない。
CrystalDiskMark ベンチマーク結果(参考)
アロケーションユニットサイズ 4KB ディスク使用領域 0GB | アロケーションユニットサイズ 4KB ディスク使用領域 200GB |
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編)
参考になるサイト
TOSHIBA – The TOSHIBA THNSNS solid state drives
SH2の日記 – Provisioned IOPSの検討
PostgreSQL Deep Dive – データブロックサイズの変更と分析系クエリへの性能影響(SSD編)