Intel SSD 320とCrucial C300のベンチマーク 〜私のシーケンシャルリード性能は53万です〜

サブタイトルは釣りです.前回の記事の続き.

今回はSSD.元々そういやSSDが身近になったけれど,体感的にどれくらい速いのかわからないなぁ.というわけでカッとなって買ってしまった天下のIntel SSD 320と巷で高速と評判のCrucial C300の比較を行う.

購入したのは,以下の2本.Intel SSD 320シリーズの一番安いやつと,巷で評判が良いCrucial RealSSDの一番安いC300をチョイス.

  • Intel 320 Series SSDSA2CT040G3K5 (40GB)
  • Crucial RealSSD C300 CTFDDAC064MAG-1G1 (64GB)

今回はSSDの性能をいかんなく発揮するため,オンボードSATAポートなぞ温いのでSATA 6.0GbpsカードをPCIに刺して利用.モノはたしか,これ↓

玄人志向 インターフェース SATA3I2-PCIe

玄人志向 インターフェース SATA3I2-PCIe

実験条件は基本的に前回と同じ

  • 実験条件
    • CPU: Intel Core i7 950 (3.07GHz)
    • Memory: 24GB
    • OS: Debian 6.0 (Linux kernel 2.6.32-5)
    • SSD1: Intel 320 Series SSDSA2CT040G3K5 (40GB)
    • SSD2: Crucial RealSSD C300 CTFDDAC064MAG-1G1 (64GB)
    • Filesystem: ext4
  • 実験方法
    • bonnie++の実行結果を取得
    • 実メモリの倍の容量がないので,オプションで -s 30000(MiB) -r 10000(MiB) を指定
      • -rは書き込み読み込みサイズ,-sは使用メモリ量

実験1

残念ながらIntel SSDの容量がメモリの2倍ないため上記オプションで実行 (実験1).

  • 実験1
# Intel SSD 320
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
myhost       32000M 53429  47 52740   4 36157   3 74444  71 300954  11 17572  15
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 104590  99 875585  85 156804  99 107920 100 1375875 100 155278  98

# Crucial C300
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
myhost       32000M 82411  71 87386   6 55738   5 87143  84 532979  19 21579  20
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 104969  97 894761  87 158443 100 108634 100 1394158 102 157783 100
myhost,32000M,82411,71,87386,6,55738,5,87143,84,532979,19,21578.7,20,16,104969,97,894761,87,158443,100,108634,100,1394158,102,157783,100

出たー!! ついにシーケンシャルリードで520MB/s (参考値) が出た.Intel 320に比べてCrucial C300の方がシーケンシャルリードにおいて相当高い値を示した.

  • 320: 293.9 MB/s
  • C300: 520.5 MB/s

速っ! まさに

「私の戦闘力 (シーケンシャルリード性能) は53万 (KByte/sec) です」

520.5MB/sなんて数字が出るとは思っていなかったので,思わずよだれが出てしまった.Random Seeks (IOPS) で比較すると,

  • Intel 320: 17572 IOPS
  • Crucial C300: 21579 IOPS

こちらもCrucial C300の方が高いパフォーマンス.いずれにせよSSDらしく,驚異的なIOPSが出ている.
IOPSはその名の通り,秒あたりのIO回数.bonnie++ちゃんはlseekして,ちょっとreadして,ちょっとwriteしているみたい.詳細は本家をご参照.

今,巷で人気のFusion-IOのIOPSはどれくらいだろうとぐぐってみたら,"ioDrive DUO 320GB, SLC タイプの場合、26万IOPS"(http://storage-talk.cozax.com/2010/12/20/fusion-io-iodrive/) という数字を見つけた.DuoってRAID0相当のことだと思うので2で割って,SLC -> MLC換算で更に2で割って考えても6.5万IOPS.速ぇ.Fusion-IOのウリはレイテンシなのでIOPSだけで比較はできないけれど..QUADにできるかわからないけれど,リアルに「私のIOPSは53万です」も近い世界ですわ.

実験2

Crucial C300は64GBあるので,デフォルト設定で実行可能.実験2では前回のWD20EARXの2TB HDD最外周部における結果と併記する.

  • 実験2
# Crucial C300
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
myhost       48312M 78805  71 80993   6 55418   5 91983  88 455278  17 11446  14
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 102392  99 869921 106 155183  98 106936 101 1365242 100 156846  99
myhost,48312M,78805,71,80993,6,55418,5,91983,88,455278,17,11446.3,14,16,102392,99,869921,106,155183,98,106936,101,1365242,100,156846,99


# WD20EARX 最外周部
Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -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
myhost       48312M 114205  96 118003   9 31951   3 83020  81 145385   5 210.6   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 97039  97 853774  83 152938 100 104650  99 1324712  97 152024 100
myhost,48312M,114205,96,118003,9,31951,3,83020,81,145385,5,210.6,0,16,97039,97,853774,83,152938,100,104650,99,1324712,97,152024,100

Crucial C300は実験1に比べて全体的に控えめな数字が出た.残念ながら53万は出なかった.特にIOPSがかなり低い.シーケンシャルリードは下がったとはいえ,444.6MB/sを出している.こっちの方が実際の値に近いのだろうか.

HDDと比べてみると,シーケンシャル書き込み性能はHDDの方が高いことがわかる.RewriteはどうやらSSDの方が高い.Rewrite

1.3 Rewrite
ファイルのチャンク(現在は16384バイト)は、read(2) で読み込まれ、内容が変更され、write(2) を使って書き込まれる。lseek(2) が使われる。ファイルスペースのアロケーションは発生しないので、I/O は、局所化される。このテストでは、ファイルキャッシュとデータ転送速度の効率がテストされることになる。
(http://d.hatena.ne.jp/yoshifumi1975/20080320/p2)

ということをやっているので,「readでSSD有利 + lseekでHDDのシーク発生」という2つのコンボが効いているのだと思う.

実際の利用シーンでどれくらいの差が出るかを検証したかったのだけれど,それを待っているとまた2年くらい経ちそうなので忘れないうちに結果だけ載せておく.

あと,いろいろチューニングしたらまだ速くなるのかわからないけれど,ゆとりはデフォルト設定が大好きなので,それで満足のいく数字出たから深追いしない.ファイルシステムによってread性能がどれだけ変わるかも興味深かったけれど,後でやる.

結論,SSDすごい (投げやり)