2012年9月8日土曜日

同じ容量・規格の microSD でもメーカーにより 100 倍以上速度が違うケースがあった


(ベンチマークソフトの生データは記事末尾にまとめてあります)

この記事を書くきっかけは、電子書籍リーダー kobo touch の内部ストレージを
2GB から 32GB に交換したことにありました。
kobo touch の内部ストレージは microSD なので、
ストレージの入れ替えってそんなに難しくないんですよね。
詳しいことは以下のブログなどを参考にしてください。
もちろん、保証はなくなりますので自己責任でどうぞ。



私は 32GB, class10 のノーブランドの microSD を買い、交換しました。
するとどうなったか。

ページ遷移がめちゃくちゃ遅くなった!

なんでやねん!
class10 なので読み取り速度は速いんじゃないのか?

頭にきたので手元の microSD などをかき集めてベンチマークを取ってみました。
Windows 7 上で CrystalDiskMark 3.0.1 というソフトを使いました。

ここで注意です。
CrystalDiskMark の動作を眺めていて気づいたのですが、
このソフト、複数回計測した場合は最大の値を採用するようです(せめて中央値にしようよ...)。
しかも、Random Read/Write の場合は
1回目が他の回よりも桁で大きいスコアを出していたこともあるので
キャッシュが効いているか否かがスコアに如実に影響しているとおもいます。
この点を留意したうえで以降の記事を御覧ください。

最初に結果をまとめると、

・Random Write、とくに小さなサイズ (ここでは 4 KB) のファイルを書き込みする場合はメーカーによって差が大きい。最高と最低で 100 倍以上スコアが違うケースがあった。
・それ以外 (Sequential Read, Sequential Write, Random Read) は各メーカーでそんなに差はない。せいぜい 2 倍以内。


で、それから導いた結論は、

携帯や kobo のように小さいファイル(数 KB 単位)の書き込みを行う場合は、メーカーやブランドによって性能に大差が出る可能性がある
・デジカメのように、比較的大きなファイル(MB 単位)を書き込む場合はノーブランドでもあまり変わらなさそう

です。


例として 4(+1) 社の "32GB, class10" の microSD の
Random Write 4KB (QD=1) の結果です。
(他のデータは記事末尾につけています)

1位 Gigastone 1.123 MB/s
2位 SAMSUNG 0.624 MB/s
3位 PATRIOT 0.008 MB/s
4位 ADATA  0.006 MB/s

参考 Sandisk 1.317 MB/s (これだけ UHS Speed Class 1 という規格) 

2位と3位の違いはなんでしょうか......。
しかも、Gigastone という私のよく知らないメーカーが1位になってしまいました。
たしかこれ、ノーブランドとして格安で買ったはずなんですけど。

kobo にはそれまで ADATA を入れていたのですが、
もしやと思って Gigastone のに入れ替えてみました。
すると、ページめくりがさっきより速くなりました
(100 倍速くなったわけではないです。別の箇所が律速なのでしょう)。
kobo はページをめくるたびに
何かの小さいファイルを書き込みしているのかもしれません。

というわけで皆さん、microSD(おそらく SD も)を買うときは
規格だけでなくメーカーやブランドにも気をつけましょう。
私も今後はノーブランドは避け、
「ベンチマークソフト」と「買おうとしているブランド」で
検索をかけてから買おうと思います。

以下、資料編です。

上記 4(+1) 枚に加えて、それ以外のサイズや規格、異なったデバイスについて
CrystalDiskMark が出力したデータを貼り付けておきます。
特記がないものは全て microSD です。

共通情報

-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]


(ここの結果はメディアによって異なる)

  Test : 1000 MB
    OS : Windows 7  SP1 [6.1 Build 7601] (x64)


Gigastone 32GB, class10

           Sequential Read :    21.886 MB/s
          Sequential Write :    12.915 MB/s
         Random Read 512KB :    20.860 MB/s
        Random Write 512KB :    10.902 MB/s
    Random Read 4KB (QD=1) :     3.599 MB/s [   878.7 IOPS]
   Random Write 4KB (QD=1) :     1.123 MB/s [   274.2 IOPS]
   Random Read 4KB (QD=32) :     3.387 MB/s [   826.8 IOPS]
  Random Write 4KB (QD=32) :     0.826 MB/s [   201.6 IOPS]

PATRIOT 32GB, class10

           Sequential Read :    22.380 MB/s
          Sequential Write :    11.184 MB/s
         Random Read 512KB :    21.150 MB/s
        Random Write 512KB :     0.942 MB/s
    Random Read 4KB (QD=1) :     4.610 MB/s [  1125.5 IOPS]
   Random Write 4KB (QD=1) :     0.008 MB/s [     2.0 IOPS]
   Random Read 4KB (QD=32) :     5.259 MB/s [  1284.0 IOPS]
  Random Write 4KB (QD=32) :     0.008 MB/s [     2.0 IOPS]
  

ADATA 32GB, class10

           Sequential Read :    22.184 MB/s
          Sequential Write :    19.169 MB/s
         Random Read 512KB :    21.803 MB/s
        Random Write 512KB :     0.740 MB/s
    Random Read 4KB (QD=1) :     5.495 MB/s [  1341.4 IOPS]
   Random Write 4KB (QD=1) :     0.006 MB/s [     1.5 IOPS]
   Random Read 4KB (QD=32) :     5.756 MB/s [  1405.2 IOPS]
  Random Write 4KB (QD=32) :     0.006 MB/s [     1.5 IOPS]

SAMSUNG 32GB, class10

           Sequential Read :    22.225 MB/s
          Sequential Write :    12.029 MB/s
         Random Read 512KB :    20.302 MB/s
        Random Write 512KB :    10.766 MB/s
    Random Read 4KB (QD=1) :     4.981 MB/s [  1216.1 IOPS]
   Random Write 4KB (QD=1) :     0.624 MB/s [   152.2 IOPS]
   Random Read 4KB (QD=32) :     5.025 MB/s [  1226.9 IOPS]
  Random Write 4KB (QD=32) :     0.628 MB/s [   153.4 IOPS]

Sandisk 32GB, class10 (UHS Speed Class 1)

           Sequential Read :    40.941 MB/s
          Sequential Write :    12.961 MB/s
         Random Read 512KB :    41.222 MB/s
        Random Write 512KB :    14.347 MB/s
    Random Read 4KB (QD=1) :     4.634 MB/s [  1131.4 IOPS]
   Random Write 4KB (QD=1) :     1.317 MB/s [   321.6 IOPS]
   Random Read 4KB (QD=32) :     4.238 MB/s [  1034.8 IOPS]
  Random Write 4KB (QD=32) :     0.844 MB/s [   206.2 IOPS]

ノーブランド 2GB, class不明 (携帯のおまけ)

           Sequential Read :    20.733 MB/s
          Sequential Write :    11.533 MB/s
         Random Read 512KB :    20.210 MB/s
        Random Write 512KB :     1.842 MB/s
    Random Read 4KB (QD=1) :     4.357 MB/s [  1063.8 IOPS]
   Random Write 4KB (QD=1) :     0.032 MB/s [     7.9 IOPS]
   Random Read 4KB (QD=32) :     4.251 MB/s [  1037.9 IOPS]
  Random Write 4KB (QD=32) :     0.021 MB/s [     5.2 IOPS]

Sandisk 2GB, class不明 (kobo touch の内部ストレージとして入っていたものを FAT32 にフォーマットし直した)

           Sequential Read :    19.428 MB/s
          Sequential Write :     7.966 MB/s
         Random Read 512KB :    18.568 MB/s
        Random Write 512KB :     1.750 MB/s
    Random Read 4KB (QD=1) :     3.185 MB/s [   777.7 IOPS]
   Random Write 4KB (QD=1) :     0.063 MB/s [    15.3 IOPS]
   Random Read 4KB (QD=32) :     3.027 MB/s [   738.9 IOPS]
  Random Write 4KB (QD=32) :     0.057 MB/s [    14.0 IOPS]

ノーブランド SD 32GB, class 10

           Sequential Read :    21.448 MB/s
          Sequential Write :    17.606 MB/s
         Random Read 512KB :    21.689 MB/s
        Random Write 512KB :     0.612 MB/s
    Random Read 4KB (QD=1) :     4.484 MB/s [  1094.8 IOPS]
   Random Write 4KB (QD=1) :     0.005 MB/s [     1.3 IOPS]
   Random Read 4KB (QD=32) :     4.556 MB/s [  1112.4 IOPS]
  Random Write 4KB (QD=32) :     0.005 MB/s [     1.3 IOPS]

VAIO Z21 の SSD (2 台で RAID0)

           Sequential Read :   878.082 MB/s
          Sequential Write :   117.238 MB/s
         Random Read 512KB :   404.977 MB/s
        Random Write 512KB :   241.832 MB/s
    Random Read 4KB (QD=1) :    16.151 MB/s [  3943.1 IOPS]
   Random Write 4KB (QD=1) :    39.692 MB/s [  9690.5 IOPS]
   Random Read 4KB (QD=32) :   197.002 MB/s [ 48096.3 IOPS]
  Random Write 4KB (QD=32) :    93.460 MB/s [ 22817.4 IOPS]